简述: getAttributesetAttribute的使用方法。

本文初发于 “曾晨de小站” zengchen233.cn,同步转载于此。

在Servlet中,经常会有很多的Servlet,我们有时候可能在一个Servlet中存放了消息,需要从另一个servlet中请求,所以这个时候getAttributesetAttribute就起到了很大的作用。

上示例

HelloServlet.java

package cn.zengchen233.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        String username = "曾晨";
        context.setAttribute("username",username);//将一个数据保存在了ServletContext中,名字username,值曾晨

        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");

//        resp.getWriter().print(username);
        System.out.println("Hello, Servlet!");

//        resp.sendRedirect("/practice/error");   //进行重定向
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

在上述代码中,我们看这段代码context.setAttribute("username",username);,这里我们把一个数据username = 曾晨保存在了ServletContext中,在web.xml中注册路径为/hello,在看下面代码。

GetServlet.java

package cn.zengchen233.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class GetServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        String username = (String) context.getAttribute("username");
        System.out.println("进入了这个get请求中");

        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");

        PrintWriter writer = resp.getWriter();
        writer.print("名字:"+username);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

上述代码中,我们注册的路径为/get,此时我们直接请求/get显示出来的是:名字:NULL,我们必须先请求/hello,才能在/get中请求到正确的信息。