简述: getAttribute
和setAttribute
的使用方法。
本文初发于 “曾晨de小站” zengchen233.cn,同步转载于此。
在Servlet中,经常会有很多的Servlet,我们有时候可能在一个Servlet中存放了消息,需要从另一个servlet中请求,所以这个时候getAttribute
和setAttribute
就起到了很大的作用。
上示例
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
中请求到正确的信息。