Servlet是Spring MVC框架中的控制器。用来接收用户请求,调用模型(javaBean)响应用户请求,选择视图(JSP)响应结果。
Servlet是由两个Java包组成:java.servlet和java.servlet.http。在java.servlet包中定义了所有的Servlet类必须实现或扩展的通用接口和类。java.servle.http包中定义了采用HTTP通信协议的HttpServlet类。
在Servlet接口中定义了5个方法,其中3个方法代表了Servlet的声明周期:
1.init方法:负责初始化Servlet对象
2.service方法:负责响应客户端的请求
3.destroy方法:当Servlet对象退出声明周期时,负责释放占有资源
当Web容器接收到某个请求时,Servlet把请求封装成一个HttpServletRequest对象,然后把对象传给Servlet的对应的服务方法。
创建HttpServlet的步骤----“四部曲”
1.扩展HttpServlet抽象类
2.覆盖HttpServlet的部分方法,如覆盖doGet()或者doPost();
3.获取Http请求信息,通过HttpServletResquest对象来检索HTML表单所提交的数据。
4.生成HTTP响应结果,通过HttpServletResquest对象生成响应结果。
举个栗子:
package com.control;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.bean.User;
import Operate.UserOperate;
//@WebServlet("/queryUserServlet")
public class queryUserServlet extends HttpServlet /*第一步:扩展HttpServlet抽象类*/ {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public queryUserServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
/*第二步:覆盖doPost方法*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//第三步:获取HTTP请求中的参数信息
String uid = request.getParameter("uid");
UserOperate uo = new UserOperate();
List<User> list = uo.getUser();
request.setAttribute("list", list);
//第四步:生成HTTP响应结果
request.getRequestDispatcher("user_information.jsp").forward(request, response);
}
}
在web.xml上配置访问servlet的路径
<servlet>
<servlet-name>queryUser</servlet-name>
<servlet-class>com.control.queryUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>queryUser</servlet-name> //与第一个servlet-name的值必须一致
<url-pattern>/queryUser.do</url-pattern> //访问servlet的路径
</servlet-mapping>