Servlet学习之ServletContext对象
我们想要实现Servlet中实现数据共享,那么我们就需要学习新的东西了,这个就是ServletContext上下文对象,请看下图是就是Servlet中如何使用ServletContext来实现数据共享的。
其实就是HelloServlet把数据放到Servletcontext中,GetServlet再去把里边的数据取出来。这样就是实现了HelloServlet和GetServlet的数据共享
下边是具体的实现
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>com.ke.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/set</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Get</servlet-name>
<servlet-class>com.ke.servlet.GetServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Get</servlet-name>
<url-pattern>/get</url-pattern>
</servlet-mapping>
package com.ke.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 {
ServletContext context = this.getServletContext();
String name = "王五";
context.setAttribute("name",name); //将一个数据保存在Servlet中,名字为name ,值为 name
}
}
package com.ke.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 names = (String)context.getAttribute("name");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
resp.getWriter().print("名字:"+names);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
如果先访问get那么名字是null,因为HelloServlet还没有把数据放进去。要先访问/set在访问/get