一、Servlet使用步骤
二、Servlet生命周期
三、Servlet接收与返回数据
四、GET请求与POST请求的区别
五、转发与重定向
一、Servlet使用步骤
servlet是运行在服务器上的应用程序。
Servlet是单实例多线程的。
- 创建web项目,在web.xml中配置Servlet信息。
- 编写Servlet.java
...
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
...// 该Servlet要执行的逻辑代码
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
- 运行项目
- 浏览器地址:http://ip:端口号/项目名称/映射地址
http://localhost:8080/test_war_exploded/index.jsp
二、Servlet生命周期
- 加载跟实例化Servlet。
Servlet 通过调用 构造 方法进行实例化,构造方法必须为无参构造方法。默认是在第一次被访问的时候构造对象。
也可以在web.xml中通过
<load-on-startup>N</load-on-startup>
配置Servlet被创建的时机。
(N为一个整数表示优先级,>=0表示在web服务器启动的时候创建,<0表示第一次访问时创建)
- Servlet 实例创建完毕后立马通过调用 init () 方法进行初始化。
如果初始化失败抛出ServletException,Servlet对象将会被垃圾回收器回收。init初始化操作只会执行一次。初始化时机紧跟Servlet创建。
- Servlet 调用 service() 方法来处理客户端的请求。
- Servlet 通过调用 destroy() 方法终止(结束)。
- 最后Servlet 由 JVM 的垃圾回收器进行垃圾回收。
三、Servlet接收与返回数据
接收表单数据:request.getParameter("xxx");
返回数据:response.getWriter().write("xxx");
返回的数据可以通过回调函数的data参数取得。
四、GET请求与POST请求的区别
get | post |
---|---|
参数拼接在url,不安全 | post的参数封装到请求体,相对安全 |
传的只能是字符串类型 | 除了传字符串还可以传非字符串类型比如文件 |
数据大小限制2kb,速度快 | 理论上大小没有限制,速度慢 |
五、转发与重定向
转发:req.getRequestDispatcher("xxx").forward(req,res);
一次请求,返回200,地址栏无变化。
重定向:res.sendRedirect("xxx");
二次请求,第一返回302,第二次请求会使用第一次请求响应中的Location头信息地址进行访问。第二次请求返回200或者304,地址栏会改变。
抉择使用转发还是重定向的时候,一般由是否传值、传值的方式所决定。例如,若使用request传值,由于request只在一次请求中存活,故只能使用转发这种一次请求的方式。若使用session传值,由于session存活范围更大则可以使用重定向来跳转页面。