ServletContext
作者:互联网
ServletContext
web容器在启动的时候,它会为每个web程序都创建对应的ServletContext对象,它代表了当前的web应用;
1.共享数据
我在这个Servlet中保存的数据,可以在另外一个Servlet中拿到;
创建放置数据的类
public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // this.getInitParameter(); 初始化参数 // this.getServletConfig(); Servlet配置 ServletContext context = this.getServletContext();//Servlet上下文 String username = "小红";//数据 context.setAttribute("username",username);//将一个数据保存在ServletContext中,名字为username,值 username } }
读取数据的类
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;charset=utf-8"); resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); resp.getWriter().print("名字:" + username); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } }
配置web.xml
<servlet> <servlet-name>hello</servlet-name> <servlet-class>com.uestc.servlet.HelloServlet</servlet-class> <!-- <init-param>--> <!-- <param-name></param-name>--> <!-- <param-value></param-value>--> <!-- </init-param>--> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet> <servlet-name>getc</servlet-name> <servlet-class>com.uestc.servlet.GetServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>getc</servlet-name> <url-pattern>/getc</url-pattern> </servlet-mapping>
测试访问结果;名字:小红
2.获取初始化参数
<!-- 配置一些web应用的初始化参数 --> <context-param> <param-name>url</param-name> <param-value>jdbc:mysql://localhost:3306/mybatis</param-value> </context-param>
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = this.getServletContext(); String url = context.getInitParameter("url"); resp.getWriter().print(url); }
3.请求转发
java类
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = this.getServletContext(); System.out.println("进入了ServletDemo04"); // RequestDispatcher requestDispatcher = context.getRequestDispatcher("/gp");//转发的请求路径 // requestDispatcher.forward(req,resp);//调用forward实现请求转发; context.getRequestDispatcher("/gp").forward(req,resp); }
web.xml
<servlet> <servlet-name>sd4</servlet-name> <servlet-class>com.uestc.servlet.ServletDemo04</servlet-class> </servlet> <servlet-mapping> <servlet-name>sd4</servlet-name> <url-pattern>/sd4</url-pattern> </servlet-mapping>
4.读取资源文件
Properties
-
在Java目录下新建properties
-
在resources目录下新建properties
发现:都被打包到了同一个路径下:classes路径,我们俗称这个路径为classpath;
思路:需要一个文件流:
Java类
public class ServletDemo05 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/com/uestc/servlet/aa.properties"); Properties prop = new Properties(); prop.load(is); String user = prop.getProperty("username"); String pwd = prop.getProperty("password"); resp.getWriter().print(user+":"+pwd); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } }
db.properties在resources下创建
username=root
password=123456
aa.properties在Java下面创建j
username=root123123
password=root12356
配置web.xml文件
<servlet> <servlet-name>sd5</servlet-name> <servlet-class>com.uestc.servlet.ServletDemo05</servlet-class> </servlet> <servlet-mapping> <servlet-name>sd5</servlet-name> <url-pattern>/sd5</url-pattern> </servlet-mapping>
测试出现properties的内容即可。
标签:username,ServletContext,ServletException,resp,req,context 来源: https://www.cnblogs.com/mhy123/p/16470108.html