Servlet详解---取得其他内置对象

取得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取得。


使用Servlet的request对象取得session内置对象:【HttpSessionDemoServlet.java】

package com.skewrain.demo2;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class HttpSessionDemoServlet extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse resp)

        throws ServletException,IOException{

        HttpSession ses = req.getSession();

        System.out.println("SESSION ID -->" + ses.getId());

        ses.setAttribute("username","斜雨"); //设置session属性

        System.out.println("username属性内容:" + ses.getAttribute("username"));

    }

    public void doPost(HttpServletRequest req,HttpServletResponse resp)

        throws ServletException,IOException    {

        this.doGet(req,resp);

   }

}

配置org/web-inf/web.xml的内容如下:

<servlet>

    <servlet-name>sessiondemo</servlet-name>

    <servlet-class>com.skewrain.demo2.HttpSessionDemoServlet</servlet-class>

</servlet>

<servlet-mapping>

    <servlet-name>sessiondemo</servlet-name>

    <url-pattern>/HttpSessionDemoServlet</url-pattern>

</servlet-mapping>

在浏览器端执行此Servlet,服务器端的输出结果如下所示:


此时,可以取得了session的对象了。


取得application对象

之前讲解内置对象的时候,一直强调过,对于application对象可以通过this.getServletContext()方法取得。

Public ServletContext getServletContext()

现在在HttpServlet的父类之中已经专门提供了取得ServletContext接口的对象,所以下面就利用此方法完成功能。

【ServletContextDemoServlet.java的内容如下:】

package com.skewrain.demo2;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class ServletContextDemoServlet extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse resp)

        throws ServletException,IOException{

        ServletContext app = super.getServletContext();

        System.out.println("真实路径:" + app.getRealPath("/"));

    }

    public void doPost(HttpServletRequest req,HttpServletResponse resp)

        throws ServletException,IOException{

        this.doGet(req,resp);

    }

}

配置web.xml的内容如下:

<servlet>

    <servlet-name>applicationdemo</servlet-name>

    <servlet-class>com.skewrain.demo2.ServletContextDemoServlet</servlet-class>

</servlet>

<servlet-mapping>

     <servlet-name>applicationdemo</servlet-name>

     <url-pattern>/ServletContextDemoServlet</url-pattern>

</servlet-mapping>

我们在浏览器中执行此Servlet,在服务器端的输出结果如下:


可见,已经能够取得虚拟目录对应的真实路径了。


小结:

1):通过getSession()方法可以直接取得HttpSession的实例化对象;

2):通过getServletContext()方法可以取得ServletContext的实例化对象。


取得了session之后就意味着可以进行登录验证了。

通过getServletContext()方法可以取得application对象,而之前调用的this.getServletContext()方法完成的也是同样的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值