一、ServletContext对象

1.什么是ServletContext对象

ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象 内部封装是该web应用的信息,ServletContext对象一个web应用只有一个

问题:一个web应用有几个servlet对象?----多个

ServletContext对象的生命周期?

创建:该web应用被加载(服务器启动或发布web应用(前提,服务器启动状 态))

销毁:web应用被卸载(服务器关闭,移除该web应用)

2.怎样获得ServletContext对象
ServletContext servletContext = config.getServletContext();
ServletContext servletContext = this.getServletContext();
3.ServletContext的作用

(1)获得web应用全局的初始化参数

web.xml中配置初始化参数
<!- -配置全局的初始化参数-->

<context-param>

<param-name>driver</ param-name >

<param-value>com.mysql.jdbc.Driver</ param- value >

< /context-param >
通过context对象获得参数
//获得ServletContext对象

ServletContext servletContext = getServletContext();

//获得初始化参数

String initParamter = context.getInitParameter(“driver”);

System.out.println(initParamter);
(2)获得web应用中任何资源的绝对路径(重要 重要 重要)

方法:String path = context.getRealPath(相对于该web应用的相对地址);

(3)ServletContext是一个域对象(重要 重要 重要)

什么是域对象?什么是域?

存储数据的区域就是域对象

ServletContext域对象的作用范围:整个web应(所有的web资源都可以随意向servletcontext域中存取数据,数据可以共享)

域对象的通用的方法:

setAtrribute(String name,Object obj);

getAttribute(String name);

removeAttribute(String name);

使用C3p0数据源,C3P0Utils,DBCPUtis,HttpServlet,servletContext知识实现登录和计算登录人数的功能:

下面贴出LoginServlet的方法:

public class LoginServlet extends HttpServlet {

@Override

public void init() throws ServletException {

//ServletContext域中存一个数据count

int count = 0;

this.getServletContext().setAttribute("count", count);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//1.获取用户名和密码

String username = request.getParameter("username");

String password = request.getParameter("password");

//2、从数据库中验证该用户名和密码是否正确

QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());

String sql = "select * from user where username=? and password=?";

User user = null;

try {

user=qr.query(sql, new BeanHandler<User>(User.class), username,password);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//3、根据返回的结果给用户不同显示信息

if(user!=null){

//用户登录成功

//从ServletContext中取出count进行++运算

Integer count =    (Integer) this.getServletContext().getAttribute("count");

count++;

response.getWriter().write(user.toString()+"---you are success login !"+count);

this.getServletContext().setAttribute("count", count);

}else{

response.getWriter().write("username or password error!");

}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}
Last modification:July 29th, 2019 at 03:45 pm