ServletContext
- ServletContext简介
- 共享数据
- 获取初始化参数
- 读取资源文件数据
- 请求转发
ServletContext简介
-
servletContext接口是Servlet中最大的一个接口,呈现了web应用的Servlet视图
-
ServletContext实例是通过 getServletContext()方法获得的,由于HttpServlet继承GenericServlet的关系,GenericServlet类和HttpServlet类同时具有该方法。
-
servlet与servletContext的关系
共享数据
-
ServletContext起到承上启下的作用,可以共享数据的载体,让不同servlet之间进行通信
-
servlet1设置属性值
public class FirstServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext sc=this.getServletContext(); sc.setAttribute("author:","sudongzhao"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }
-
servlet2获取属性值
public class GetContent extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext getauthor=this.getServletContext(); String author=(String)getauthor.getAttribute("author"); resp.getWriter().print("author"+author); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } }
-
web.xml配置servlet
<servlet> <servlet-name>firstServlet</servlet-name> <!--FirstServlet目录路径--> <servlet-class>FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>firstServlet</servlet-name> <!--浏览器访问路径--> <url-pattern>/firstServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>GetContent</servlet-name> <!--FirstServlet目录路径--> <servlet-class>GetContent</servlet-class> </servlet> <servlet-mapping> <servlet-name>GetContent</servlet-name> <!--浏览器访问路径--> <url-pattern>/GetContent</url-pattern> </servlet-mapping>
-
浏览器测试,先访问servlet1的路径,再访问servlet2的路径
获取初始化参数
- 在web.xml配置应用初始化参数
<!--配置应用初始化数据-->
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/blog</param-value>
</context-param>
- 获取配置初始化数据输出
public class ServletContextDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext sc = this.getServletContext();
String url = sc.getInitParameter("url");
resp.getWriter().print(url);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
}
- web.xml配置servlet路径
<servlet>
<servlet-name>ServletContextDemo1</servlet-name>
<!--FirstServlet目录路径-->
<servlet-class>ServletContextDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletContextDemo1</servlet-name>
<!--浏览器访问路径-->
<url-pattern>/getc</url-pattern>
- 浏览器访问截图
读取资源文件数据
-
在resource中新建db.properties文件
username:sudongzhao
age:23
- 在target查看资源路径,获取db.properties内容
public class ServletContextDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties properties = new Properties();
properties.load(is);
String username = properties.getProperty(“username”);
String age = properties.getProperty(“age”);
resp.getWriter().print(“username:”+username+" "+“age:”+age);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
}
- web.xml配置servlet路径
ServletContextDemo2
ServletContextDemo2 ServletContextDemo2
/getr ```
- 浏览器访问截图
请求转发
- 获取跳转路径并进行跳转
public class ServletContextDemo3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletC = this.getServletContext();
servletC.getRequestDispatcher("/getc").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
}
- 配置servlet路径
<servlet>
<servlet-name>ServletContextDemo3</servlet-name>
<!--FirstServlet目录路径-->
<servlet-class>ServletContextDemo3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletContextDemo3</servlet-name>
<!--浏览器访问路径-->
<url-pattern>/getnewr</url-pattern>
</servlet-mapping>
- 输入http://localhost:8080/javaweb_war/getnewr获取到的是getc路径的页面