【08】Servlet

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的生命周期

  1. 实例化

    Web容器(Tomcat)创建具体的Servlet实例

  2. 初始化

    调用init()方法,执行Servlet的初始化的操作
    初始化执行一次

  3. 执行服务

    服务的统称是service()方法,doGet()、doPost()可以看作是service的具体体现
    服务会执行多次,每刷新一次执行一次

  4. 销毁

    在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"));
		}
	}

猜你喜欢

转载自blog.csdn.net/Spectre_win/article/details/88977378
08