域对象
可以在不同Servlet之间传递数据的对象,就是域对象
只要是域对象都有如下方法
setAttribute(name,value);存储数据的方法
getAttribute(name);根据name获取对应数据值
removeAttribute(name);删除数据
request域对象
request 里面的数据只有当前的一个请求域内,也就是请求转发前后的servlet可以共享。
Request ,一次请求来到服务器,服务器创建,服务器这次请求响应结束后销毁request ,
request 对象是一次请求内有效。
注意: request 域对象数据只能在页面跳转-请求转发才能共享获取,
如果想要页面不跳转就能获取共享数据,就只能使用ServletContext域对象.
List<String> list = new ArrayList<String>();
list.add("张三" );
list.add("李四" );
list.add("王五" );
request.setAttribute("emplist" , list);
response.getOutputStream().write("进入了ForwardOneServlet" .getBytes());
request.getRequestDispatcher("ForwardTwoServlet" ).forward(request, response);
* 路径写法
* 全路径,绝对路径 url=/工程名字/资源路径
* 相对路径 url=资源路径
* 浏览器执行的路径第一个“/”代表webapps根目录
* 服务器执行的路径第一个“/”代表当前工程目录下
* 只有请求转发时服务器执行的,所以不能写工程名字。
request.getRequestDispatcher("/requestGetData" ).forward(request, response);
request.getRequestDispatcher("requestGetData" ).forward(request, response);
response.getOutputStream().write("进入了ForwardTwoServlet" .getBytes());
Object object = request.getAttribute("emplist" );
if (object!=null ){
List<String> list = (List<String>) object;
for (int i = 0 ; i < list.size(); i++) {
response.getOutputStream().write(list.get(i).getBytes());
}
}
ServletContext域对象
作用域范围全局
当前工程只有一个ServletContext对象,存储的数据在当前工程内部共享。
当服务器启动的时候被创建,当前服务器正常关闭或重启的时候才销毁。
servletContext里面存储的数据在当前项目下的所有servelt都可以共享
public void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<String> list = new ArrayList<String>();
list.add("aa" );
list.add("bb" );
list.add("cc" );
getServletContext().setAttribute("emplist" , list);
}
public void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Object object = getServletContext().getAttribute("emplist" );
if (object!=null ){
List<String> list = (List<String>) object;
for (String string : list) {
response.getWriter().write(string);
}
}
}
获取全局配置参数
<context-param >
<param-name > dbuser</param-name >
<param-value > root</param-value >
</context-param >
<context-param >
<param-name > dbuserpwd</param-name >
<param-value > 123</param-value >
</context-param >
public void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Enumeration<String> enumeration = getServletContext().getInitParameterNames();
while (enumeration.hasMoreElements()) {
String paramName = enumeration.nextElement();
String paramValue = getServletContext().getInitParameter(paramName);
System.out.println(paramName+":" +paramValue);
}
}
统计成功登录的人数
- - -
.
.
.
.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html >
<head >
<title > login.html</title >
<meta http-equiv ="keywords" content ="keyword1,keyword2,keyword3" >
<meta http-equiv ="description" content ="this is my page" >
<meta http-equiv ="content-type" content ="text/html; charset=UTF-8" >
</head >
<body >
<form action ="/TEST/login" method ="post" >
<p > 用户名:<input type ="text" name ="userName" /> </p >
<p > 密 码:<input type ="password" name ="pwd" /> </p >
<p > <input type ="submit" value ="登录" /> </p >
</form >
</body >
</html >
public class LoginServlet extends HttpServlet {
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8" );
String userName = request.getParameter("userName" );
String pwd = request.getParameter("pwd" );
User user = new User(0 , userName, pwd);
UserService userService = new UserService();
if (userService.login(user)){
Object object = getServletContext().getAttribute("count" );
if (object==null ){
getServletContext().setAttribute("count" , 1 );
}else {
int count = (int ) object;
count++;
getServletContext().setAttribute("count" ,count);
}
request.setAttribute("result" , true );
}else {
request.setAttribute("result" , false );
}
request.getRequestDispatcher("/result" ).forward(request, response);
}
}
/**
* 业务处理类
*/
public class UserService {
/**
* 实例数据访问类
*/
UserDao userDao = new UserDao();
/**
* 验证登录
* @param user
* @return
*/
public boolean login (User user) {
if (userDao.isExists(user)){
return true ;
}
return false ;
}
}
/**
* 数据访问类
* @author songyu
*
*/
public class UserDao {
/**
* dbutil工具类
*/
private QueryRunner runner = new QueryRunner(new ComboPooledDataSource());
/**
* 判断用户是否存在
* @param user
* @return
*/
public boolean isExists (User user) {
try {
String sql = "select * from user where username=? and pwd=?" ;
User user2 = runner.query(
sql,
new BeanHandler<User>(User.class) ,
user.getUserName(),user.getPwd());
return user2!=null ;
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
/**
* dopost2
*/
public void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8" );
PrintWriter out = response.getWriter();
Object object = request.getAttribute("result" );
if (object!=null ){
boolean flag = (boolean ) object;
if (flag){
Object object2 = getServletContext().getAttribute("count" );
int count = 0 ;
if (object2!=null ){
count = (int ) object2;
}
out.write("<font color='green'>目前登录成功的人数:" +count+"</font>" );
}else {
out.write("<font color='red'>登录失败</font>" );
}
}
}