Servlet相关对象

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'>");

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值