在上一篇文章中讲解了取得初始化配置信息,这一章我们一起学习怎么取得其它内置对象
取得HttpSession实例
在Servlet程序中要想取得看一个Session对象,则可以通过HttpServletRequest接口完成,在此接口中提供了以下的操作方法
1. public HttpSession getSession()
2. public HttpSession getSession(boolean create)
Servlet本身提供的只是request和response两个对象,所以如果要想取得session对象,则只能依靠request对象,因为session属于HTTP协议的范畴,而且在每次发送请求的时候,服务器都会自动为客户端设置一个Cookie,所以,很自然的,session中要使用了Cookie的机制,但是Cookie又只能通过request取得,那么自然session也就只能通过request取得了。
一个实例取得Session对象
- package ServletDemo;
- import java.io.IOException;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class HttpSession extends HttpServlet { //继承HttpServlet
- public void doGet(HttpServletRequest req,HttpServletResponse resp)
- throws ServletException,IOException{ //处理服务
- javax.servlet.http.HttpSession ses=req.getSession();//取得session对象
- System.out.println("session id:"+ses.getId());//取得session id
- ses.setAttribute("username","赵玉强");//设置属性
- System.out.println("username属性内容:"+ses.getAttribute("username"));
- }
- public void doPost(HttpServletRequest req,HttpServletResponse resp)
- throws ServletException,IOException{ //处理POST请求
- this.doGet(req, resp); //调用doGet()方法
- }
- }
之后进行web.xml文件的配置
- <servlet>
- <servlet-name>session</servlet-name>
- <servlet-class>ServletDemo.HttpSession</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>session</servlet-name>
- <url-pattern>/HttpSessionTest</url-pattern>
- </servlet-mapping>
在浏览器中输入:http://localhost:8080/test/HttpSessionTest
看一下服务器如下图所示:
此时可以取得了session 对象了
取得application对象
在讲解如何取得application对象之前,先来回顾一下一个问题,在之前讲解的内置对象的时候一直强调过,对于application对象可以通过this.getServletContext()方法取得
现在HttpServlet的父类之中已经专门提供了取得ServletContext接口的对象,所以下面就是利用此方法完成功能。
- package ServletDemo;
- import java.io.IOException;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class ServletContext extends HttpServlet { //继承HttpServlet
- public void doGet(HttpServletRequest req,HttpServletResponse resp)
- throws ServletException,IOException{ //处理服务
- javax.servlet.ServletContext app=super.getServletContext();//取得application
- System.out.println("真是路径:"+app.getRealPath("/"));
- }
- public void doPost(HttpServletRequest req,HttpServletResponse resp)
- throws ServletException,IOException{ //处理POST请求
- this.doGet(req, resp); //调用doGet()方法
- }
- }
- <servlet>
- <servlet-name>application</servlet-name>
- <servlet-class>ServletDemo.ServletContext</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>application</servlet-name>
- <url-pattern>/ServletContextTest</url-pattern>
- </servlet-mapping>
http://localhost:8080/test/ServletContextTest
转载于:https://blog.51cto.com/zhaoyuqiang/1151142