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中配置初始化数据


sex

配置web.xml 用于测试访问结果




hello
com.shiy.servlet.HelloServlet


hello
/helloservlet


getServlet
com.shiy.servlet.GetServlet


getServlet
/getname

②请求转发

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);
}
最后测试访问即可~

posted @ 2022-10-07 01:22  Takiyo  阅读(47)  评论(0)    收藏  举报