用户密码加密和拦截器的应用

前端代码

<!DOCTYPE html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script src="${pageContext.request.contextPath}/js/jquery.js"></script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册</title>
</head>
<body>
<script>
    function test(){
        var formObject = {};
        var form = $("#myForm").serializeArray();
        $.each(form,function(i,item){
            formObject[item.name] = item.value;
        });
        var data=JSON.stringify(formObject);
        alert(data);
        $.ajax({
			url:'${pageContext.request.contextPath}/registerUser.action',
			type:'post',
            // data表示发送的数据
			data:data,
            // 定义发送请求的数据格式为JSON字符串
            contentType : "application/json;charset=UTF-8",
            //定义回调响应的数据格式为JSON字符串,该属性可以省略
            dataType : "json",
            //成功响应的结果
            success : function(data){
                if(data != null){
                    alert("用户信息"+data.id+"用户名"+data.name+data.age);
                }
                else
				{
                    alert("添加失败");
                }
            },
            error : function(data){
                if(data != null){
                    alert("注册失败");
                }
            }
        })
    }
</script>
	<%--<form action="${pageContext.request.contextPath}/registerUser.action" id="form1" method="post">--%>
<form id="myForm">
		ID号:<input type="text" name="id" /><br />
		密&nbsp;&nbsp;&nbsp;码:<input type="text" name="password" /><br />
	    年&nbsp;&nbsp;&nbsp;龄:<input type="text" name="age" /><br />
		<input type="button" value="注册" id="formDemo" onclick="test()"/>
	</form>
</body>
</html>

后台代码,对前端传过来的user.password 加密

//	表单运用json进行前后台传递数据
	@RequestMapping(value="/registerUser.action",method = RequestMethod.POST)
	@ResponseBody
	public User registerUser(@RequestBody User user)
	{
		User user1 = userMapper.selectByPrimaryKey(user.getId());
		if(user1==null)
		{
			//对Password加密 DigestUtils 是spring
			String PasswordSecret= DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
			user.setPassword(PasswordSecret);
			userMapper.insert(user);
			user1 = userMapper.selectByPrimaryKey(user.getId());
			String s = user1.toString();
			return user1;
		}else {
			return null;
		}

	}

注册完毕后登陆
前端登陆代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="${pageContext.request.contextPath}/js/jquery.js"></script>
<title>用户登录</title>
</head>
<body>
<script>
    function login(){
        var formObject = {};
        var form = $("#login").serializeArray();
        $.each(form,function(i,item){
            formObject[item.name] = item.value;
        });
        var data=JSON.stringify(formObject);
        alert(data);
        $.ajax({
            url:'${pageContext.request.contextPath}/login.action',
            type:'post',
            // data表示发送的数据
            data:data,
            // 定义发送请求的数据格式为JSON字符串
            contentType : "application/json;charset=UTF-8",
            //定义回调响应的数据格式为JSON字符串,该属性可以省略
            dataType : "json",
            //成功响应的结果
            success : function(data){
                if(data != null){
                    alert("登陆成功");
                    window.location.href = "${pageContext.request.contextPath}/ToMain.action";
                }
                else
                {
                    alert("登陆失败1");
                }
            }
        })
    }
</script>
    ${msg}
	<form id="login">
		用户名:<input type="text" name="id"/><br />
		密&nbsp;&nbsp;&nbsp;码:
                 <input type="password" name="password"/><br />
		<input type="button" value="登录" onclick="login()"/>
	</form>


</body>
</html>

后台登陆验证代码

//验证用户登陆信息代码
	@RequestMapping(value="/LoignUser.action",method = RequestMethod.GET)
	@ResponseBody
	public String TestLoginUser(String name)
	{
		String NameSecret=DigestUtils.md5DigestAsHex(name.getBytes());
        UserExample userExample=new UserExample();
        userExample.or().andNameEqualTo(NameSecret);
		List<User> users = userMapper.selectByExample(userExample);
		return  users.toString();
	}

在这里插入图片描述

拦截器
Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。
流程
在这里插入图片描述

多个拦截器执行流程
在这里插入图片描述
先对登陆拦截,对未登陆的用户进行拦截

首先,在springmvc中配置拦截器

		<!--SpringMVC拦截器-->
		<mvc:interceptors>
			<!-- 多个拦截器 -->
			<mvc:interceptor>
				<mvc:mapping path="/**"/>
				<!-- 自定义的拦截器类 -->
				<!--排除的路径-->
				<!--<mvc:exclude-mapping path="/ToEditUser.action"/>-->
				<bean class="com.lzm.interceptor.Interceptor1"/>
			</mvc:interceptor>
		</mvc:interceptors>

拦截器类

package com.lzm.interceptor;


import com.lzm.pojo.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Interceptor1 implements HandlerInterceptor{

	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
		// TODO Auto-generated method stub
		HttpSession session = request.getSession();
		String requestURI = request.getRequestURI();
		if(!requestURI.contains("login")){
			User user = (User) session.getAttribute("user");
			if (null == user) {
//	/没有登陆,转向去登陆界面
				request.getRequestDispatcher("/Tologin.action").forward(request,response);
				return false;
			}
		}
		return true;
	}

	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		// TODO Auto-generated method stub
		System.out.println("方法后 1");
		
	}
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		// TODO Auto-generated method stub
		System.out.println("页面渲染后 1");
		
	}



}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值