servlet实操之ServletContext
1、web容器在启动的时候,它会为每一个web程序都创建一个ServletContext对象,他代表了当前的web应用;作用:
①数据共享
我们在这个servlet中保存的数据可以在另一个servlet中拿到
设置数据的类
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// this.getInitParameter();
// this.getServletConfig();
ServletContext servletContext = this.getServletContext();
String name = "shiy";
servletContext.setAttribute("name",name);//将一个数据保存在了servletContext中名字为name,值为name
}
}
访问数据的类
public class GetServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String name = (String) servletContext.getAttribute("name");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
writer.print("
" + name + "
");}
也可以在web.xml中配置初始化数据
配置web.xml 用于测试访问结果
②请求转发
public class Demo04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
//请求转发
RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher("/getSex");
requestDispatcher.forward(req,resp);
}
}
④读取资源文件
properties
在java目录下新建properties
在resources目录下新建properties
发现都被打包到同意路径下:classespath 俗称“类路径”
思路:
需要一个文件流
getServletContext先获取流的资源路径
然后new一个Properties,load加载文件流,在再使用getProperty获取数据
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
InputStream resourceAsStream = this.getServletContext().getResourceAsStream("/WEB-INF/classes//com/shiy/servlet/db.properties");
Properties prop = new Properties();
prop.load(resourceAsStream);
String username = prop.getProperty("username");
String password = prop.getProperty("password");
resp.setContentType("text/html");
resp.getWriter().print(username + ":"+password);
}
最后测试访问即可~

浙公网安备 33010602011771号