javaweb之Servlet

来源:互联网 发布:java制表符怎么用 编辑:程序博客网 时间:2024/06/11 14:49
1.Servlet认识
     servlet在web.xml中配置,由web容器调用
(在tomcat中servlet属于container子级容器,属于context)

servlet在第一次使用时被初始化,调用init()方法

2.HttpServlet
     service()转换请求为HttpServletRequest和HttpServletResponse,并路由到具体方法(由父类service()完成)
     web应用程序停止或重新启动前,Servlet引擎卸载Servlet,并在卸载之前调用Servlet的destroy()
(web配置Servlet拦截映射,Servlet的service()方法默认路由,具体方法返回response)

3.Servlet映射
     映射路径 / 表明为defaultServlet

4.ServletConfig

public void init(ServletConfig config) throws ServletException {
     this.config = config;
}    

     当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,我们通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

5.ServletContext

context.setAttribute("data", data);

     WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
  ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
  由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

配置Context参数

<!-- 配置WEB应用的初始化参数 -->
<context-param>  
      <param-name>url</param-name>
      <param-value>jdbc:mysql://localhost:3306/test</param-value>     </context-param>

/* 获取Context参数
   GenericServlet的getInitParameter在内部实现了getServletConfig
*/
ServletContext context = this.getServletContext();
String contextInitParam = context.getInitParameter("url");

实现请求转发

ServletContext context = this.getServletContext();
RequestDispatcher rd = context.getRequestDispatcher("/servlet/ServletContextDemo5");//获取请求转发对象(RequestDispatcher)
rd.forward(request, response);//调用forward方法实现请求转发

读取资源文件(InputStream)

InputStream in =                                  this.getServletContext().getResourceAsStream("/WEB-        INF/classes/gacl/servlet/study/db4.properties");
Properties prop = new Properties();
prop.load(in);
String driver = prop.getProperty("driver");

通过类装载器读资源文件J(InputStream)

//获取到装载当前类的类装载器
ClassLoader loader = ServletContextDemo7.class.getClassLoader();
//用类装载器读取src目录下的db1.properties配置文件
InputStream in = loader.getResourceAsStream("db1.properties");
Properties prop = new Properties();
prop.load(in);
String driver = prop.getProperty("driver");


6.在客户端缓存Servlet数据

response.setDateHeader("expires",System.currentTimeMillis() + 24 * 3600 * 1000);
response.getOutputStream().write(data.getBytes());