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的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,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对象中,并在调用servlet的init方法时,将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处理请求、多线程和映射、Servlet的卸载、Servlet映射技术、通过类名调用Servlet、HTTP会话、建立Session、Request Dispatcher接口、Servlet接口、ServletConfig接口、ServletContext接口、SingleThreadModel...
注意:每个servlet有一个ServletConfig,每个Web应用有一个ServletContext.要把初始化参数认为是部署时常量,可用在运行时得到这些初始化参数,但不能设置初始化参数,根本没有setInitParameter().如果修改XML来改变...
很清楚的讲解了ServletContext和ServletConfig,不光有理论上的讲解,还有例子。
javax.servlet.ServletConfig javax.servlet.GenericServlet javax.servlet.ServletContext javax.servlet.ServletRequest javax.servlet.http.HttpUtils javax.servlet.ServletResponse javax.servlet....
javax.servlet.ServletContext.class javax.servlet.RequestDispatcher.class javax.servlet.Servlet.class javax.servlet.ServletException.class javax.servlet.ServletRequest.class javax.servlet.Servlet...
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...
主要包括Servlet基础和 ServletConfig接口,ServletContext接口两大部分; javaweb,servlet,接口,编写类; 初学者,大学生,复习,详细,课堂笔记;
(2)ServletContext对象被包含在ServletConfig对象中,开发人员在编写servlet时,可以通过 this.ServletConfig.getServletContext方法获得对ServletContext对象的引用.还可以直接通过 this.getServletContext方法...
1. 手动编写java代码,实现Servlet的访问 2. 使用Eclipse创建Web Project,并创建一个Servlet继承HttpServlet,打印“Hello HttpServlet”在浏览器上。...7. 使用ServletContext对象,实现转发操作
包括Servlet生命周期、ServletConfig、ServletContext、欢迎页头面的设置,及的设置与匹配。第二部分为Servlet核心。除了包括基础的API外,例如GenericServl 资源太大,传百度网盘了,链接在附件中,有需要的同学...
Servlet处理请求、多线程和映射、Servlet的卸载、Servlet映射技术、通过类名调用Servlet、HTTP会话、建立Session、Request Dispatcher接口、Servlet接口、ServletConfig接口、ServletContext接口、SingleThreadModel...
下面小编就为大家带来一篇有关ServletConfig与ServletContext的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
类 ServletConfig ServletOutputStream ServletContext ServletInputStream ServletResponse GenericServlet ServletRequest Servlet <br>javax.servlet.http<br>接口 类 HttpSession Cookie...
servlet容器的详细说明,包括里面接口的方法。内容如下:RequestDispatch, servlet, servletConfig, servletContext。。
ServletContext接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象,Servlet可以记录事件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一...
方立勋JavaWeb视频教程_servlet开发和ServletConfig与ServletContext对象(第五天) 方立勋JavaWeb视频教程_request response(第六天) 方立勋JavaWeb视频教程_Cookie和Session(第七天) 方立勋JavaWeb视频教程_...
3.1 Web应用的结构和部署 3.2 部署描述文件 3.3 ServletConfig接口 3.4 ServletContext接口 3.5 Servlet的多线程问题 3.6 一个综合实例
java开发web的帮助文档,内含Cookie ...ServletConfig ServletContext ServletException ServletInputStream ServletOutputStream ServletRequest ServletResponse SingleThreadModel UnavailableException
1 ServletConfig.getServletContext(); 2 ServletContextEvent.getServletContext(); 3 HttpSession.getServletContext(); ------------------------------------------------ JSP Java Server Page java服务...
1、ServletConfig API:2、GenericServlet类2、HttpServlet类:(重点掌握)1、doGet和doPost的区别:2、Servlet细节:3、web.xml文件(了解)4、ServletContext(重要):3、网站访问量统计小案例:二、过滤器三、监听...