初学JavaWeb-利用session登陆以及数据读取

8 篇文章 0 订阅
1 篇文章 0 订阅

今天想做这么一个功能,当用户A登陆时候,显示A内容。当用户B登陆时,显示B内容。于是又学到了点新知识。

session对象:

      session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

前端代码:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<html>
<head>
    <title>mmp</title>
    <script src="../static/js/jquery-3.3.1.min.js"></script>
</head>
<body>

//利用session进行登陆和登出
<form id="Login_form">
    <input placeholder="请输入用户名" name="user" id="user" type="text">
    <input placeholder="请输入密码" name="password" id="password" type="password" maxlength="8">
    <a id="Login_form_btn" href="javascript:void(0);">login</a>
    <a id="Login_exit_btn" href="javascript:void(0);">exit</a>
</form>

//JSTL以及EL表达式
<c:if test="${login eq 1}">
    ${username}请看这里
</c:if>
<script>
    
    //退出方法
    $('#Login_exit_btn').click(function () {
        $.ajax({
            url:'/demo4/demo/exit',
            success:function (data) {
                alert("退出成功");
                window.location.href="/demo4/demo/index";
            }
        })
    })
    
    //登陆方法
    $('#Login_form_btn').click(function () {
        $.ajax({
            url:'/demo4/demo/login',
            data:$('#Login_form').serialize(),
            success:function (data) {
                if(data=="success"){
                    alert("登陆成功");
                }else{
                    alert("登陆失败");
                }
                window.location.href="/demo4/demo/index";
            }
        })
    })

</script>

</body>

</html>

后端代码:

package com.xudan.demo4.controller;

import com.xudan.demo4.mapper.UserMapper;
import com.xudan.demo4.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.HttpRequestHandlerServlet;
import org.springframework.web.servlet.support.RequestContextUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.security.Signature;
import java.util.List;
import java.util.UUID;

@Controller
@RequestMapping("/demo")        //控制器映射
public class DemoController {
    @Autowired          //自动装配
    private UserMapper userMapper;

    //重定向指向的方法,用来进行跳转到INF内的index.jsp
    @RequestMapping("index")
    public String index(Model model) {
        List<User> userList = userMapper.selectAll(new User());
        model.addAttribute("userList", userList);
        return "index";
    }

    @RequestMapping("exit")
    @ResponseBody
    public String exit(HttpServletRequest request){
        request.getSession().removeAttribute("login");
        request.getSession().removeAttribute("username");
        return "success";
    }

    @RequestMapping("login")
    @ResponseBody
    public String login(User user,HttpServletRequest request){
        String username = user.getUser();
        String password = user.getPassword();
        if(username==null || username.equals("") || password==null || password.equals("")){
            return "fail";
        }
        if(userMapper.selectAll(user).size()>0){
            request.getSession().setAttribute("login","1");
            request.getSession().setAttribute("username",username);
            return "success";
        }else {
            request.getSession().setAttribute("login","0");
            return "fail";
        }
    }

}

所学到的几个新知识:

 (一)HttpServletRequest
  

     HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。


 (二)request.getSession().setAttribute

 getSession()是返回当前用户的会话对象。

而serAttribute就是往session作用域中存值. setAttribute(key,value.) key代表变量名称,value代表具体的值


 (三)EL表达式

 ${username}

       通过上面的例子我们可以知道,EL表达式的语法非常简单,它以”${”开头,以”}”结束,中间为合法的表达式,具体的语法格式为:

       ${expression}

       expression用于指定要输出的内容,可以使字符串,也可以是由EL运算符组成的表达式。

 备注:包括之前的查询,${userList}也是EL表达式 前端中的eq代表== 而ne代表!= 还有具体其它的下次去系统学习一次。


 (四)request.getSession().removeAttribute()

 removeAttribute() 这个方法代表销毁session变量,括号里填变量名称
















  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值