Day07
Servlet
1. servlet的入门
servlet 是运行在 Web 服务器中的小型 Java 程序。
需要web服务器知道java程序不是一个普通的java程序,而是一个servlet
* 通过配置进行操作
* 在web项目中,web.xml里面进行配置
实现Servlet接口
* 如果实现接口,需要把接口里面的方法都实现
继承GenericServlet, HttpServlet类
* 如果继承类,不需要把类中的方法都实现
配置web.xml
<servlet>
<serlvet-name>name</serlvet-name>
<serlvet-class></serlvet-class>
</servlet>
<servlet-mapping>
<serlvet-name>name</serlvet-name>
<url-pattern></url-pattern>
</servlet-mapping>
2.servlet的执行过程
1)发送请求http://localhost:8080/Day07/Demo1
2)<servlet-mapping>中的<url-pattern>匹配请求路径/Demo1,并找到<servlet-name>的servlet名称
3)根据找到的名称,上溯到<servlet>标签中的<servlet-name>,匹配<serlvet-class>
4)读取<serlvet-class>中的类路径,使用反射机制,加载class对象,并执行service()方法。
5)执行操作,返回相应。
3. servlet的生命周期
servlet的生命周期:从servlet创建到servlet销毁的过程
init方法,在servlet创建时候执行这个方法,执行一次,servlet在第一次访问时候创建
service方法,在每次访问servlet时候会执行这个方法,执行多次
destroy方法,销毁servlet时候执行这个方法,执行一次
4. servlet开发细节的问题
servletRequest和serlvetResponse不带协议
HttpServletRequest和HttpServletResponse带协议
提交方式是get,调用doGet方法;提交方式是post,调用doPost方法
在服务器启动时候创建servlet:
通过配置文件进行配置 ,在servlet标签里面写标签<load-on-startup>正整数的值</load-on-startup>
5. url-pattern的配置
5.1配置有三种方式
第一种方式:完全路径匹配
写法 : /aa /hello
第二种方式:目录匹配
写法: /aa/*
第三种方式:扩展名匹配
写法: *.do *.action
5.2优先级
完全路径匹配 > 目录匹配 > 扩展名匹配
6. 开发中路径的问题
6.1相对路径
(1)在html文件中引入图片
(2)有三种情况
第一种:图片和html在同一个目录下面
*直接写图片的名称
第二种:图片在html的上层目录
*写 ../ 表示上层目录
第三种:图片在html的下层目录
*直接写目录名称和图片名称
6.2绝对路径(一般开发中都使用)
(1)第一种写法:http://ip地址+端口号/文件的路径
<imgsrc="http://127.0.0.1/day07-3/path02/a.jpg"/>
(2)第二种写法:直接写 /项目名称/文件路径
<imgsrc="/day07-3/path01/cc/c.jpg"/>
7. 重定向和转发
7.1重定向
(1)使用的是客户端路径
(2)重定向请求两次,使用的是客户端路径,携带项目名称 ,比如/day07/demo3
7.2转发
(1)使用的是服务端路径
(2)转发请求一次,使用的是服务器端路径,不需要携带项目名称 , 比如 /demo4
8. ServletConfig对象
8.0 创建ServletConfig对象
(1)直接使用方法创建对象getServletConfig()
8.1得到当前运行的servlet的名称
(1)web.xml中<servlet-name>ConfigDemo1</servlet-name>
(2)StringgetServletName()
8.2创建servletContext对象
(1)ServletContextgetServletContext()
(2)一般都使用getServletContext()方法
9. ServletContext对象
创建ServletContext对象
(1)第一种方式,使用ServletConfig对象里面的方法getServletContext()
(2)第二种方式,直接使用getServletContext()
配置全局初始化参数
<context-param>
<param-name>url</param-name>
<param-value>localhost</param-value>
</context-param>
在启动tomcat服务器时候,会为每个项目创建一个唯一的servletContext对象,在这个项目里面如果通过servlet1向servletContext里面设置一个值,在这个项目里面的其他的servlet里面可以的这个值
获取初始化参数
//getServletConfig().getServletContext();
ServletContextcontext = getServletContext();
context.getInitParameter(name);
context.getInitParameterNames();
域对象[重重点]
项目已启动,就创建一个ServletContext
context.setAttribute(Stringname,Object obj);
Objectobj = context.getAttribute(String name);