1、工程目录:
2、Servlet:HelloServlet
package test.cyq;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
//@WebServlet(value = "/demo" urlpatterns="/demo" );
public class HelloServlet implements Servlet {
//完成初始化的方法,默认情况下,servlet第一次被访问时调用,且只调用一次
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("innit-----------------------------------");
}
//销毁方法,内存释放时或者服务器关闭时会调用一次,且只能调用一次。
public void destroy() {
System.out.println("destroy-----------------------------------");
}
public ServletConfig getServletConfig() {
System.out.println("getServletConfig-----------------------------------");
return null;
}
public String getServletInfo() {
System.out.println("getServletInfo-----------------------------------");
return null;
}
//提供服务,每一次被访问是都会被访问
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("hello world-------------------------");
}
}
3、web.xml 配置映射:
发现默认注解不生效,使用xml配置映射试试:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>HelloServlet</servlet-name><!-- 这里的name与下面的name一致即可 -->
<servlet-class>test.cyq.HelloServlet</servlet-class><!-- 使用到的class文件 -->
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name><!-- 与上面的name一致 -->
<url-pattern>/demo</url-pattern><!-- 所映射的URL -->
</servlet-mapping>
</web-app>
4、运行时问题:
5、问题解决方式:
尝试过N种方法:
1、更换3.0.1到4.0.1版本,无解。
2、移除Maven的依赖,使用包直接添加方式,无解。
3、清除项目Clean,再运行,无解。
4、把依赖包scope从provided改成runtime,错误变成无发转换Tomcat的servlet,还是无解。
通过网络上的多种方式,发现都无法解决。
还好经过思考,发现了另一种解决方式:Java Servlet 入门:使用Tomat的servlet-api.jar库解决:servlet java.lang.ClassNotFoundException