1、servlet介绍
- java ee 规范之一,用于生成动态web资源的技术。生成过程在服务器端。
- java 在服务器端的程序,server + applet = servlet
- URL 将执行servlet的指定的方法
- servlet 必须 直接或间接 与 javax.servlet.Servlet接口有关
直接:实现Servlet接口
间接:继承父类,父类实现Servlet接口 - 编写servlet
servlet程序必须放在tomcat中(web服务器),如果tomcat关闭,servlet不能使用了。tomcat称为servlet容器
2、servlet对象
- javax.servlet.Servlet接口,所有的servlet规范
- javax.servlet.ServletConfig接口,当前servlet配置对象
- javax.servlet.ServletRequest接口,请求的封装对象,明天讲
- javax.servlet.http.HttpServletRequest接口,与http协议有关的请求的封装对象
- javax.servlet.ServletResponse接口,响应的封装对象,明天讲
- javax.servlet.http.HttpServletResponse接口,,与http协议有关的响应的封装对象
- 注意:使用的都是接口,实现类都是tomcat创建 (web服务器)
3、servlet三大作用域
作用域:数据的作用范围
3.1、ServletContext
3.2、HttpSession
3.3、ServletRequest
4、servlet生命周期
4.1、init(ServletConfig)
init(ServletConfig) ,初始化方法,由tomcat(servlet容器)调用。
tomcat将创建ServletConfig实例,作为实际参数传递给初始化。ServletConfig 为当前servlet配置对象,用于封装web.xml中内容
执行时间:默认情况,在第一次执行 service方法之前执行,如果想在tomcat启动时执行,需要在web.xml配置
<servlet>
<load-on-startup>数字</load-on-startup>
</servlet>
4.2、service(ServletRequest,ServletResponse)
执行方法,由tomcat(servlet容器)调用,请求一次,执行一次
request、response将在后面具体介绍,有一个结论:
HttpServletRequest request= (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
4.3、destroy()
销毁方法,由tomcat调用,tomcat正常关闭时执行。
4.4、注意
所有的方法执行之前,必须先创建servlet实例(new ) ,servlet单实例,多线程。存在线程并发访问问题。
解决方案:加锁、不使用成员变量
5、ServletConfig对象
当前servlet在web.xml配置内容的封装对象。
5.1 getServletName()
获得在web.xml配置的servlet名称
<servlet>
<servlet-name>xxx
5.2 String getInitParameter(name)
获得指定名称的初始化参数的值
<servlet>
<init-param>
<param-name>初始化参数的名称
<param-value>初始化参数的值
5.3 Enumeration getInitParameterNames()
获得所有的初始化参数的名称<init-param>
<param-name>名称1<param-value>值1
</init-param><init-param>
<param-name>名称2<param-value>值1
</init-param>
5.4 getServletContext()
获得ServletContext对象,Servlet接口提供 getServletConfig()方法获得ServletConfig对象
6、ServletContext对象
ServletContext是servlet的上下文,别名:servlet管理者(当前web项目)
一个web项目,对应一个ServletContext对象
tomcat启动时,由tomcat创建,tomcat关闭时,进行销毁
获得方式:this.getServletContext()
6.1属性attribute操作(域操作)
在一个web项目中,共享数据6.1.1 setAttribute(String name,Object value) , 将指定的对象设置到ServletContext对象中6.1.2 getAttribute(String name) ,通过指定的名称获得对象6.1.3 removeAttribute(String name) ,移除指定名称对应的对象
6.2 管理web资源
6.2.1 getRealPath(String path) , 获得发布到tomcat下,指定路径的实际路径,参数必须/开头,/表示web项目的根例如:getRealPath(“/”); , d:/tomcat/webapps/day08/例如:getRealPath(“/WEB-INF/web.xml”) , d:/tomcat/webapps/day08/WEB-INF/web.xmlgetResourceAsStream(String path) ,与getRealPath相似,getRealPath获得文件路径String,getResourceAsStream获得文件对应的流getResourcePaths(String path) ,获得指定路径下的所有资源
6.3 web项目初始化
6.3.1 getInitParameter ,获得web项目的初始化参数6.3.2 getInitParameterNames 获得web项目的所有初始化参数名称web.xml配置:<web-app><context-param><param-name><param-value>