首先来说说ServletContext()是干什么的,例如淘宝我们每个人登录淘宝的信息都不一样,淘宝在不同页面需要显示我们的个人信息,就需要这么一个“容器”来存放我们的信息,让他在每个页面都能显示,这可以用到ServletContext();
举个小例子说明一下ServletContext()的用法
给ServletContext()设置值的方法
package com.zhen.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 {
//Servlet 上下文
ServletContext context = this.getServletContext();
String username = "甄臻";
context.setAttribute("username",username);
}
}
取出ServletContext()中值的方法
package com.zhen.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 GetServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String username = (String)context.getAttribute("username");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
resp.getWriter().print("名字:"+username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
别忘了xml文件
<servlet>
<servlet-name>hello2</servlet-name>
<servlet-class>com.zhen.servlet.GetServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello2</servlet-name>
<url-pattern>/getc</url-pattern>
</servlet-mapping>
测试访问结果:
先访问hello给这个“容器”赋值,
在访问getc可从页面读取赋值的内容