JavaWeb实现登录与注销功能(session对象)

一、什么是session:

 1、session在网络应用中称为“会话控制”,是服务器为了保存用户状态而创建的一个特殊的对象。简单来说,session就是一个对象,用于存储信息。 

2、session的作用:

        我们先来想一个问题,这个问题就是我们在游览购物网站时,我们并没有登录,但是我们任然可以将商品加入购物车,并且进行查看,当我们退出游览器后再打开游览器进行查看时,购物车中依然有我们选择的商品,这该怎么实现呢?

        当然,我们可以使用cookie,但是cookie能存放大量数据吗?这时,我们就需要一种新的技术,Session。session是存储于服务器端的特殊对象,服务器会为每一个游览器(客户端)创建一个唯一的session。这个session是服务器端共享,每个游览器(客户端)独享的。我们可以在session存储数据,实现数据共享。

二、登录和注销流程

用户在请求登录之后判断是否合法,如果合法说明登录成功,并且将其加入到session集合中;用户登录之后想要注销则可以将信息从Session中删除。

1、登录界面

利用jsp文件写一个登录界面login2.jsp

<html>
<head>
    <title>Title</title>
</head>
<body>

<%
    HashMap<String, String> error = ((HashMap<String, String>)request. getAttribute("error"));
    String fail = (String) request.getParameter("fail");

    String username = "";
    String password = "";
    Cookie[] cookies = request.getCookies();
    if (cookies!=null && cookies.length>0){
        for (Cookie cookie : cookies) {
            String name = cookie.getName();
            if ("username".equals(name)){
                username = cookie.getValue();
            }
            if ("password".equals(name)){
                password = cookie.getValue();
            }
        }
    }
%>

<form action="UserController" method="post">
    <input type="hidden" value="login" name="userAction">
    <table border="1" align="center" >
        <tr align="center"><th colspan="2">登录</th></tr>
        <tr><td>账号:<input type="text" name="username" value="<%=username%>"><%=fail==null?"":fail%><span style="color:red"> <%=error==null?"":error.get("username")==null?"":error.get("username")%></span></td></tr>
        <tr><td>密码:<input type="text" name="password" value="<%=password%>"><span style="color:red"> <%=error==null?"":error.get("password")==null?"":error.get("password")%></span></td></tr>
        <tr><td><input type="checkbox" name="autoLogin" value="1">一周内自动登录</td></tr>
        <tr align="center"><td colspan="2"><input type="submit" value="登录"><input type="reset" value="重置"></td></tr>

    </table>


</form>

</body>
</html>
2、controller层:
@WebServlet("/UserController")
public class UserController extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String userAction = req.getParameter("userAction");
        String logout = req.getParameter("logout");
        //处理中文乱码
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        /**
         * 注销
         */
        if ("loginout".equals(userAction)){
            HttpSession session = req.getSession();
            session.removeAttribute("username");
            req.getRequestDispatcher("/WEB-INF/pages/loginoutsuccess.jsp").forward(req,resp);
        }

        /**
         * 查询用户信息
         */
        if ("showAllUser".equals(userAction)){
            String username = (String)req.getSession().getAttribute("username");
            if (username!=null){
                List<User> users = new UserService().showAllUser();
                if (users.isEmpty()){
                    req.setAttribute("infor","未查询到用户相关信息");
                   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值