web实现登录注册功能视频
public class InitServlet extends HttpServlet {
@Override
public void init() throws ServletException {
//创建一个集合,用户保存用户注册信息
List<User> list = new ArrayList<User>();
//将list保存到ServletContext作用域中
this.getServletContext().setAttribute("list", list);
}
老师,上面代码中:this.getServletContext().setAttribute("list", list);可以换成request.request.getSession().setAttribute("list", list);吗?请问session与ServletContext的区别,特别是作用域方面
正在回答 回答被采纳积分+1
package com.imooc.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.imooc.domain.User;
/**
*用户登录的Servlet
*/
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接收数据
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
//校验用户是否正确
List<User> users = (List<User>) this.getServletContext().getAttribute("list");
for (User user : users) {
if(user.getName().equals(username)){
//用户名正确
if(user.getPassword().equals(password)){
//密码正确
//登录成功
//判断复选框是否勾选
String remember = request.getParameter("remember");
if("true".equals(remember)){
//完成记住用户名功能
Cookie cookie = new Cookie("username", user.getName());
//设置路径和有效时间
cookie.setPath("/reg_login_mvc");
//设置有效时间
cookie.setMaxAge(60*60*24);//保存24小时
//将cookie写回浏览器
response.addCookie(cookie);
}
//将用农户信息保存到session中
request.getSession().setAttribute("user", user);
response.sendRedirect(request.getContextPath()+"/success.jsp");
return;
}
else {
request.setAttribute("err", "密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}else {
request.setAttribute("msg", "用户名不存在");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
老师,发了
这里的this.getServletContext().setAttribute("list", list); 不可以被换成request.getSession().setAttribute("list", list);
这里是想保存注册的所有用户,如果用request.getSession().setAttribute("list", list); 去存的话,当这个用户退出的时候, 存进去的list就没有了。之前所有注册的信息就会丢失了
可以理解为,session 的作用域是一个用户从登陆到退出所有的信息可以存在这个session里
ServletContext 的作用域是从服务器启动到结束所有的信息可以存在这个里边。
而这里我们要存的是所有注册的用户的信息。所以我们要存在ServletContext 域里。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星