文章目录
1. Servlet
- Server 和 Applet 两个单词的合体
- Servlet 是一个 Java程序,是在服务器上运行以处理客户端请求并做出响应的程序
- JSP也在服务器上
- Servlet充当MVC中的控制层(Control)
2. Servlet的创建
- src目录下创建com.XXX.control包(controller----控制)
- 创建自定义的Servlet,修改URL(去掉Servlet,保留开始的“/”,在最后添加“.action”)
- 修改doPost()或者doGet()方法中的代码,实现两者的互相调用,使得Get和Post提交方式相一致
3. Servlet的生命周期
- 实例化
Web容器(Tomcat)创建具体的Servlet实例
- 初始化
调用init()方法,执行Servlet的初始化的操作
初始化执行一次 - 执行服务
服务的统称是service()方法,doGet()、doPost()可以看作是service的具体体现
服务会执行多次,每刷新一次执行一次 - 销毁
在Web服务器上移除Servlet,调用destory()方法
销毁操作只执行一次
4. Servlet配置 – XML文件
主要是在“部署描述符”(Web.xml)中配置servlet以及servlet-mapping标签
注意:
<servlet-class>:完整的“包名.类名”
<url-pattern>:用于在URL中做路径跳转
<servlet-name>:两者通过相同的<servlet-name>实现关联
5. Servlet配置 – 注解配置
在每一个Servlet的源代码中,使用@WebServlet注解进行配置
@WebServlet常用属性
属性 | 类型 | 是否必须 | 说明 |
---|---|---|---|
asyncSupported | boolean | 否 | 指定Servlet是否支持异步操作模式 |
displayName | String | 否 | 指定Servlet显示名称 |
initParams | WebInitParam[] | 否 | 配置初始化参数 |
loadOnStartup | int | 否 | 标记容器是否在应用启动时就加载这个Servlet |
name | String | 否 | 指定Servlet名称 |
urlPatterns/value | String[] | 否 | 这两个属性作用相同,指定Servlet处理的url |
第一种配置方式:不使用任何的属性,直接写URL,表示当前这个Servlet处理的URL
@WebServlet("/login.action")
public class LoginServlet extends HttpServlet {}
第二种配置方式:使用value属性,表示当前这个Servlet处理的URL
@WebServlet(value="/login.action")
public class LoginServlet extends HttpServlet {}
第三种配置方式:使用urlPatterns属性,表示当前这个Servlet处理的URL
- urlPatterns属性,表示多个请求提交到一个Servlet上。
@WebServlet(
asyncSupported = true,
urlPatterns = {
"/A",
"/A.action",
"/demoA.action",
"/ServletA"
})
public class LoginServlet extends HttpServlet {}
6. 使用注解给Servlet配置初始化参数
@WebServlet(urlPatterns="/DemoServletA",initParams={
@WebInitParam(name = "encoding", value = "utf-8"),
@WebInitParam(name = "uname", value = "zhangsan")})
public class DemoServletA extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
System.out.println("init 初始化");
System.out.println(config.getInitParameter("encoding"));
System.out.println(config.getInitParameter("uname"));
}
}