servlet的执行流程
- 首先用户提交一个http请求。
- tomcat会解析请求的url路径获取访问的servlet资源路径
- 如果通过请求url能够找到与之对应的servlet,那么tomcat会创建一个servlet实例,调用其中的方法执行。
- 同时tomcat容器解析请求,封装成HttpServletRequest类型的request对象。将要响应的信息封装为HttpServletResponse类型的response对象。
- 在servlet的对应方法中可以通过API对request对象和response对象进行访问和操作。
- 最后将response交给tomcat,tomcat就会将其变成响应文本的格式发送给浏览器。
servlet的生命周期
- 服务器启动时或者第一次请求该servlet时,会执行init方法初始化一个Servlet对象。
- 该servlet对象去处理所有客户端请求,在service方法中执行,service方法会执行多次。
- 当Servlet服务器正常关闭时,执行destroy方法销毁servlet对象,只执行一次
servlet的常用对象
- ServletContext:服务器启动后就产生了这个对象,所有客户共享的对象
- HttpServletRequest:封装了用户请求信息
- HttpServletRespons:处理后的数据返回客户端
- HttpSession:存储客户端请求的信息,因此它是有状态交互式的
- ServletConfig:包含了当前Servlet所在的WEB应用的配置信息
请求转发与重定向的区别
- 请求转发,是在服务器内部进行跳转,对于客户端是不可见的。一个servlet把请求交给另一个servlet进行处理。
- 重定向是客户端跳转,相当于客户端向服务端发送请求之后,服务器返回一个响应,客户端接收到响应之后又向服务端发送一次请求,一共是2次请求。最终地址栏会发生变化。
使用From表单向后台传参
<form action="/hello.do" method="post"> --提交到hello.do
<table border="2px" >
<tr>
<td>用户名:</td>
<td><input type="text" name="name" value=""/></td>
</tr>
<tr>
<td colspan="2" ><input type="submit" value="提交" style="float:right"/></td>
</tr>
</table>
</form>
如果是以form表单提交中文的时候,也会在LoginServlet中出现乱码,那么怎么修改呢?
1)首先将当前的form表单的method设置为:method=“post”
2)在LoginServlet类中的Service( )方法中设定编码
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");