##Servlet开发流程
1、定义Servlet类
-
直接实现Servlet接口
public class MyServlet implements Servlet{ //需要定义5个Servlet接口中声明的方法 }
-
为了简化开发,针对非标准协议,提供了一个抽象父类GenericServlet
- 采用的是适配器模式
- 一般用于游戏的服务器端开发
public class MyServlet extends GenericServlet{ public void service(ServletRequest request,ServletResponse response)throws ServletException,IOException { } }
-
为了进一步简化开发,针对http协议,提供了一个父类HttpServlet
- 采用的是模板模式,主要提供的service方法的实现,所以一般不允许覆盖定义service
- 内部实现实际上就是通过request.getMethod():String获取请求方法,然后根据对应的请求方法转发给对应的doXxxx方法
- 例如/add.do?id=124&name=lisi
- get请求使用?作为地址和参数的分割,例如add.do是请求地址,?之后的内容就是请求串
- 多个请求参数之间采用&符号作为分割
- 参数的格式为[名称=值]
- 例如/add.do?id=124&name=lisi
public class MyServlet extends HttpServlet{ public void doXxx(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ ... } }
2、使用web应用的核心配置文件/WEB-INF/web.xml映射当前Servlet
-
Servlet类中没有main方法,也就是说具体调用由服务器负责。具体执行时机默认为第一次用户请求时
<servlet> <servlet-name>名称</servlet-name> <servlet-class>对应的类的全名</servlet-class> </servlet> <servlet-mapping> <servlet-name>对应上面定义的名称</servlet-name> <url-pattern>/请求地址.do</url-pattern> </servlet-mapping>
3、当用户在浏览器中输出xml中配置的请求路径,则由服务器负责按照一定的标准调用Servlet类中的定义方法
###Servlet常见错误
404错误:资源未找到
- 在请求地址中的servlet的别名书写错误
- 虚拟项目名称拼写错误
500错误:内部服务器错误
- ClassNotFoundException,检查web.xml中Servlet类的全限定类名称拼写是否正确
- 因为service方法体的代码执行错误导致的,可以根据提示信息对方法体中的代码进行更改
405错误:请求方式不支持
- 请求方式和servlet中的方法不匹配所导致的
Caused by: java.net.BindException: Address already in use: JVM_Bind
- 多次重复启动服务器,导致服务器端口号冲突