1. 程式人生 > >ServletContext域對象

ServletContext域對象

宋體 class etc override return bsp att web get

場景:假設某個web服務,有兩個servlet分別是servlet1和servlet2,servlet1要傳參數name=zhangsan傳送給servlet2,傳統方法如下:

servlet1端:用response.sendRedirect函數,形式如:response.sendRedirect("/Servlet2?name=zhangsan")。

servlet2端:String name = (String)request.getParameter("name");

但是如果我要傳的參數是一個對象呢,例如一個student對象。這時候就需要引入域對象的概念了。

域對象:作用是用於保存數據,獲取數據。可以在不同的動態資源之間共享數據。

那麽,上邊的場景,用域對象來解決,示意圖如下:

技術分享

ServletContext就是一個域對象,下邊是域對象操作的函數:

  保存數據:void setAttribute(java.lang.String name, java.lang.Object object)

  獲取數據: java.lang.Object getAttribute(java.lang.String name)

  刪除數據: void removeAttribute(java.lang.String name)

實例:

servlet1

public class servlet1 extends HttpServlet {

    
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.得到域對象 ServletContext context = this.getServletContext(); //2.把數據保存到域對象中 //context.setAttribute("name", "eric"); context.setAttribute("student", new
Student("jacky",20)); System.out.println("保存成功"); } } class Student{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "Student [age=" + age + ", name=" + name + "]"; }

servlet2

public class servlet2 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //1.得到域對象
        ServletContext context = this.getServletContext();
        
        //2.從域對象中取出數據
        //String name = (String)context.getAttribute("name");
        Student student = (Student)context.getAttribute("student");
        //System.out.println("name="+name);
        
        System.out.println(student);
    }

}

ServletContext域對象