Servlet

Servlet的入门
五个方法:
1:销毁:  destroy()
2:初始化:  init (ServletConfig config)
3:获得其他对象  getServletInfo()
4:获得其他对象    getServletConfig()
5:为请求进行服务:  service(ServletRequest req(请求),ServletResponse res(响应))
Servlet的入门:
编写类:
public class ServletDemo1 implements Servlet{
   @Override
   /**
    * 为用户处理请求和响应的方法.
    */
   public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
       res.getWriter().println("Hello Servlet...");
   }
...
}
配置(XML工程里配置):
 <!-- 配置Servlet -->
 <servlet>
   <!-- Servlet的名称 -->
   <servlet-name>test1</servlet-name>
   <!-- SErvlet的全路径 -->
   <servlet-class>com.itheima.a_servlet.ServletDemo1</servlet-class>
 </servlet>
 <!-- Servlet的映射 -->
 <servlet-mapping>
   <!-- Servlet的名称 -->
   <servlet-name>test1</servlet-name>
   <!-- Servlet的访问路径 -->
   <url-pattern>/ServletDemo1</url-pattern>
 </servlet-mapping>
访问:
http://localhost:8080/day09/ServletDemo1
使用ServletRequest接收参数
              String getParameter(String name(表单的参数名));---用于接收一个名称对应一个值的数据.
               String[] getParameterValues(String name);---用于接收一个名称对应多个值的数据.
               Map getParameterMap();---用于接收表单中的所有的数据,Map的key是表单提交的参数名称,Map的value是提交参数的值.
               Enumeration getParameterNames()            ---用于获取表单中提交的所有的参数的名称.
 
 
 
Servlet的实现的关系
     Servlet            :接口
               |
     GenericServlet    :通用的Servlet
               |
      HttpServlet        :HttpServlet
               编写一个类继承HttpServlet,重写doGet和doPost方法.
               配置
 
Servlet的生命周期:
       生命周期:就是一个对象从创建到销毁的过程.
       Servlet生命周期:Servlet从创建到销毁的过程.
           何时创建:用户第一次访问Servlet创建Servlet的实例
           何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.
           用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.
           任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.
           在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).
           当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
 
Servlet的相关的配置:
启动时创建Servlet
Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
在web.xml中在<servlet></servlet>标签中配置:
<load-on-startup>2</load-on-startup>  --- 传入正整数,整数越小,被创建的优先级就越高.
 
url-pattern的配置
url-pattern配置方式共有三种:
1.完全路径匹配    :以 / 开始                例如:    /ServletDemo4 , /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6
2.目录匹配        :以 / 开始 需要以 * 结束.   例如: /* ,/aaa/* ,/aaa/bbb/*
3.扩展名匹配        : 以 * 开始的  不能以 / 开始. 例如: *.do , *.action
错误的写法    : /*.do
 
如果访问地址:
http://localhost:8080/day09/aaa.do             :第二个
完全路径匹配 > 目录匹配 > 扩展名匹配
 
开发中的路径编写:
      相对路径:都是需要找位置相对关系.不能以 / 开始的.
          ./ 当前路径  ../上一级目录
           使用相对路径访问:
       绝对路径:不需要找位置相对关系. 以 / 开始的.
           绝对路径中分为客户端路径和服务器端路径:
                 客户端路径一定要加工程名.    /day09/ServletDemo6
                 服务器端路径不需要加工程名.   /ServletDemo6
 
定时跳转:
response中设置响应头
 
addHeader(String name,String value);       --- 针对一个key对应多个value的响应头.
addDateHeader(String name,long date);
addIntHeader(String name,int value);
 
setHeader(String name,String value);     --- 针对一个key对应一个value的响应头.
setDateHeader(String name,long date);
setIntHeader(String name,int value);
 
例如:头信息: xxx:aaa
      addHeader(“xxx”,”bbb”);       -->xxx:aaa,bbb
      setHeader(“xxx”,”bbb”);       -->xxx:bbb
 
 
 
获得Servlet的配置信息
ServletConfig(了解)
代表当前的servlet的配置信息
* String getServletName();     ---获得Servlet在web.xml中配置的name的值.
* String getInitParameter(String name); ---获得Servlet的初始化参数的.
* Enumeration getInitParameterNames();     ---获得所有Servlet的初始化参数的名称.
 
ServletContext(重要)
ServletContext的作用:
* 1.用来获得全局初始化参数.
* 2.用来获得文件的MIME的类型.
* 3.作为域对象存取数据.
* 4.用来读取web项目下的文件.
 
ServletContext是一个域对象.
  * 作用范围:整个web工程.
  * 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象.
  * 销毁:服务器关闭的时候,或者项目从服务器中移除的时候.
 
 
ServletContext的功能
功能一:读取全局初始化参数
 
geiInitParameter(String name)
geiInitParameterName()(枚举)
 
功能二:获得文件的MIME的类型
geiMimeType(String file)
 
功能三:作为域对象存取数据
范围:整个web项目.而且全局的对象.
创建:服务器启动的时候,服务器为每个web项目创建一个单独的ServletContext对象.
销毁:服务器关闭的时候销毁ServletContext.
 
功能四:读取web项目下的文件
传统方式读取文件:
     使用的是相对路径,相对的JVM的路径.
     但是现在是一个web项目,相对于JVM的路径的.现在JVM已经交给tomcat管理.
 
使用ServletContext读取
InputStream getResourceAsStream(String path); --- 根据提供路径读取文件返回一个文件的输入流.
String getRealPath(String path); --- 返回一个路径的磁盘绝对路径.
 
posted @ 2018-08-25 14:10  GodCity  阅读(92)  评论(0编辑  收藏  举报