ServletConfig对象:
Servlet配置参数封装在ServletConfig对象中。在Servlet被实例化后,ServletConfig对象对任何客户端在任何时候访问都有效。
在Servlet中要得到ServletConfig对象有两种方法:
在init()方法中获取(通过init的重载方法传递)
通过getServletConfig()方法直接获取
获得参数值:getInitParameter(参数名)
一个Servlet的ServletConfig对象不能被其他Servlet访问,也就是配置参数不能共享。
案例分析:
注意:配置init-param时要找到对应的servlet结点
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ParamServlet</servlet-name>
<servlet-class>com.sodi.ParamServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>sodi</param-value>
</init-param>
</servlet>
Servlet中doGet()输出
public class ParamServlet extends HttpServlet {
private String username;//定义私有成员
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(username);//页面上输出获取到的初始化信息
out.flush();
out.close();
}
public void init() throws ServletException {//初始化servlet,配置ServletConfig对象
ServletConfig config = this.getServletConfig();
username = config.getInitParameter("username");
}
}
ServletContext(Servlet上下文对象):
服务器上的每个Web应用都会有一个背景环境对象。上下文对象提供了一个同一Web应用内的不同资源间共享信息的场所。
Javax.Servlet.ServletContext接口提供正在运行的Servlet所处的Web应用程序的上下文对象的视图,可以通过getServletContext()方法得到该Servlet运行的上下文对象。
一个Web应用共享一个ServletContext对象。
案例分析:
配置共享的ServletContext对象:
<context-param>
<param-name>password</param-name>
<param-value>sa</param-value>
</context-param>
Servlet中输出:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext context = this.getServletContext();//得到servlet中运行的上下文对象
String password = context.getInitParameter("password");//获取对象中的value值
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(username+"<br>"+password);//打印输出
out.flush();
out.close();
}
ServletContext对应的时间作用域:
开始:Web项目发布成功。
结束:Web应用从容器中卸载。
ServletContext对应的作用域称之为Application---Session会话
request对应的时间作用域:
开始:发出请求开始。
结束:收到响应结束。
Application---Session---Request
将数据保存到某个作用域中:
ServletContext、HttpSession、HttpServletRequest中的方法:
1.将对象放入某个作用域
XXX.setAttribute(String name,Object obj);
2.从某个作用域中获取对象
XXX.getAttribute(String name);
请求的转发:
服务器端转发:在一个Servlet处理完毕后,将客户端的请求传递到另一个Servlet来处理。
请求的转发通过Requestdispatcher的forward方法实现
在服务器端转向(浏览器地址栏不变、只能转向同一项目中的其它资源、1个请求)
案例:(实现服务器端转向)
firstServlet:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GB2312");
PrintWriter out = response.getWriter();
request.setAttribute("name","fyq");
ServletContext context = this.getServletContext();//配置ServletContext上下文对象
RequestDispatcher dispatcher = context.getRequestDispatcher("/LoginServlet");//转发到另一个LoginServlet中
dispatcher.forward(request, response);//实现转发
out.flush();
out.close();
}
LoginServlet:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();//获得一个PrintWriter实例
String name = (String) request.getAttribute("name");//接收转向来的值
out.print(name);
//process(request,response);
}
客户端转发:由浏览器转向其它的资源。
由浏览器转向其它的资源。(浏览器地址栏改变、可以转向任意的资源、2个不同的请求)
案例分析:
response.sendRedirect("/Web01/LoginServlet");//其一
其二
response.setHeader("Location", "http://localhost:8080/Web01/LoginServlet");//设置响应头
response.setStatus(302);//设置响应状态码
其三
response.setHeader("Refresh", "5;url=http://localhost:8080/Web01/LoginServlet");
其四
response.getWriter().print("<meta http-equiv='Refresh' content='http://localhost:8080/Web01/LoginServlet'>");
Servlet相关对象
最新推荐文章于 2025-08-13 21:27:20 发布