`
yangshen998
  • 浏览: 1244792 次
文章分类
社区版块
存档分类
最新评论

Servlet注意+ServletConfig+ServletContext

 
阅读更多

Servlet注意+ServletConfig+ServletContext

Servlet程序必须通过一个映射的URL地址来访问,servlet映射的URL地址可以是一个也可以是多个,如:

<servlet-mapping>

<servlet-name>DemoServlet</servlet-name>

<url-pattern>/xx.do</url-pattern>

<url-pattern>/yy.do</url-pattern>

</servlet-mapping>

多次的servlet请求通常服务器只创建一个servlet实例对象,直至web容器推出是这个对象才会销毁,在Servlet的整个生命周期内,Servletinit方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servletservice方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servletservice()方法,service方法再根据请求方式分别调用doXXX方法。

如果在<servlet>元素中配置了一个<load-on-startup>元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。

<servlet>

<servlet-name>invoker</servlet-name>

<servlet-class>

org.apache.catalina.servlets.InvokerServlet

</servlet-class>

<load-on-startup>2</load-on-startup>

</servlet>

用途:为web应用写一个InitServlet,这个servlet配置为启动时装载,为整个web应用创建必要的数据库表和数据

如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet

Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。

如:

<init-param>

<param-name>version</param-name>

<param-value>2.0</param-value>

</init-param>

<init-param>

<param-name>characterEncoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>driver</param-name>

<param-value>com.mysql.jdbc.Driver</param-value>

</init-param>

<init-param>

<param-name>user</param-name>

<param-value>root</param-value>

</init-param>

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

Enumeration<String>enumer=this.getServletConfig().getInitParameterNames();

while(enumer.hasMoreElements()){

Stringname=enumer.nextElement();

Stringvalue=this.getServletConfig().getInitParameter(name);

System.out.println(name+"------"+value);

}

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。

由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

packagecn.csdn.web.servlet;

importjava.io.IOException;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassDemo01ServletextendsHttpServlet{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

@Override

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

response.setCharacterEncoding("UTF-8");

//获取ServletContext对象

ServletContextcontext=this.getServletConfig().getServletContext();

context=this.getServletContext();//与上面为同一种方法

//共享数据

context.setAttribute("data","haha");

//重定向

response.sendRedirect("./data.html");

}

}

packagecn.csdn.web.servlet;

importjava.io.IOException;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

publicclassDemo02ServletextendsHttpServlet{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

@Override

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

<!DOCTYPEhtml>

<html>

<head>

<title>data.html</title>

<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">

<metahttp-equiv="description"content="thisismypage">

<metahttp-equiv="content-type"content="text/html;charset=UTF-8">

<!--<linkrel="stylesheet"type="text/css"href="./styles.css">-->

</head>

<body>

<ahref="./demo02">查看共享数据</a>

</body>

</html>

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

//怎么获取共享的数据ServletContext共享只有一个

ServletContextcontext=this.getServletContext();

Stringdata=(String)context.getAttribute("data");

response.getWriter().write(data);

}

}

分享到:
评论

相关推荐

    Servlet+API中文API[China]

    Servlet处理请求、多线程和映射、Servlet的卸载、Servlet映射技术、通过类名调用Servlet、HTTP会话、建立Session、Request Dispatcher接口、Servlet接口、ServletConfig接口、ServletContext接口、SingleThreadModel...

    ServletConfig与ServletContext.docx

    注意:每个servlet有一个ServletConfig,每个Web应用有一个ServletContext.要把初始化参数认为是部署时常量,可用在运行时得到这些初始化参数,但不能设置初始化参数,根本没有setInitParameter().如果修改XML来改变...

    ServletContext与ServletConfig的深度分析

    很清楚的讲解了ServletContext和ServletConfig,不光有理论上的讲解,还有例子。

    servlet-api-2.4.jar.zip

    javax.servlet.ServletConfig javax.servlet.GenericServlet javax.servlet.ServletContext javax.servlet.ServletRequest javax.servlet.http.HttpUtils javax.servlet.ServletResponse javax.servlet....

    javax.servlet.jar下载

    javax.servlet.ServletContext.class javax.servlet.RequestDispatcher.class javax.servlet.Servlet.class javax.servlet.ServletException.class javax.servlet.ServletRequest.class javax.servlet.Servlet...

    servlet2.4doc

    getAttribute(String) - Method in interface javax.servlet.ServletContext Returns the servlet container attribute with the given name, or null if there is no attribute by that name. getAttribute...

    JavaWeb中Servlet技术

    主要包括Servlet基础和 ServletConfig接口,ServletContext接口两大部分; javaweb,servlet,接口,编写类; 初学者,大学生,复习,详细,课堂笔记;

    Servlet知识点和示例

    (2)ServletContext对象被包含在ServletConfig对象中,开发人员在编写servlet时,可以通过 this.ServletConfig.getServletContext方法获得对ServletContext对象的引用.还可以直接通过 this.getServletContext方法...

    Servlet的运行机制

    1. 手动编写java代码,实现Servlet的访问 2. 使用Eclipse创建Web Project,并创建一个Servlet继承HttpServlet,打印“Hello HttpServlet”在浏览器上。...7. 使用ServletContext对象,实现转发操作

    【动力节点】Java经典教程_Servlet经典实战视频教程

    包括Servlet生命周期、ServletConfig、ServletContext、欢迎页头面的设置,及的设置与匹配。第二部分为Servlet核心。除了包括基础的API外,例如GenericServl 资源太大,传百度网盘了,链接在附件中,有需要的同学...

    servletapi

    Servlet处理请求、多线程和映射、Servlet的卸载、Servlet映射技术、通过类名调用Servlet、HTTP会话、建立Session、Request Dispatcher接口、Servlet接口、ServletConfig接口、ServletContext接口、SingleThreadModel...

    有关ServletConfig与ServletContext的访问

    下面小编就为大家带来一篇有关ServletConfig与ServletContext的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    学习servlet的实例和参考api

    类 ServletConfig ServletOutputStream ServletContext ServletInputStream ServletResponse GenericServlet ServletRequest Servlet &lt;br&gt;javax.servlet.http&lt;br&gt;接口 类 HttpSession Cookie...

    JAVA servlet API说明文档

    servlet容器的详细说明,包括里面接口的方法。内容如下:RequestDispatch, servlet, servletConfig, servletContext。。

    java-servlet-api.doc

    ServletContext接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象,Servlet可以记录事件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一...

    方立勋:JavaWeb视频前十一天教程配套ppt下载

    方立勋JavaWeb视频教程_servlet开发和ServletConfig与ServletContext对象(第五天) 方立勋JavaWeb视频教程_request response(第六天) 方立勋JavaWeb视频教程_Cookie和Session(第七天) 方立勋JavaWeb视频教程_...

    java_web_第3章_servlet2.ppt

    3.1 Web应用的结构和部署 3.2 部署描述文件 3.3 ServletConfig接口 3.4 ServletContext接口 3.5 Servlet的多线程问题 3.6 一个综合实例

    J2EE中文版.chm

    java开发web的帮助文档,内含Cookie ...ServletConfig ServletContext ServletException ServletInputStream ServletOutputStream ServletRequest ServletResponse SingleThreadModel UnavailableException

    jsp day1技术解析(servlet/jsp)课件下载

    1 ServletConfig.getServletContext(); 2 ServletContextEvent.getServletContext(); 3 HttpSession.getServletContext(); ------------------------------------------------ JSP Java Server Page java服务...

    JavaWeb的三大组件详细总结

    1、ServletConfig API:2、GenericServlet类2、HttpServlet类:(重点掌握)1、doGet和doPost的区别:2、Servlet细节:3、web.xml文件(了解)4、ServletContext(重要):3、网站访问量统计小案例:二、过滤器三、监听...

Global site tag (gtag.js) - Google Analytics