Selectsystem项目总结

1.新知识

实现在原来的基础上,我们新学习了一个
ThreadLocal,具体用法在这里
,主要是用来线程隔离,这样的话,项目首页的的用户信息可以通过继承spring boot的HandlerInterceptor(登录拦截器接口)接口,在preHandle方法中来拦截请求

package com.hwx.Comp;

import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.hwx.Service.userS;
import com.hwx.join.user;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Iterator;
import java.util.List;

@Component
public class MyHand implements HandlerInterceptor {

    @Autowired
    private   MyJWT jwt;

    @Autowired
    private userS userS;

    @Autowired
    private  HostHand hostHand;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object token=request.getSession().getAttribute("token");
        if(token!=null) {
            DecodedJWT yanz = jwt.yanz(token.toString());
            String name = yanz.getClaims().get("name").asString();
            List<user> users = userS.GetUserName(name);
            Iterator<user> iterator = users.iterator();
            user user = iterator.next();
            hostHand.setuser(user);
        }else{
            hostHand.clear();
        }
//        else {
//            response.sendRedirect("/login");
//        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {


        if(hostHand.getuser()!=null && modelAndView!=null){
            user user=hostHand.getuser();
            modelAndView.addObject("loginUser",user);
        }
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

,判断请求中是否含有我们在session中的token,String s = jwt.GetJwt(map1); session.setAttribute("token",s);
,在postHandle方法中(这个方法必须在preHandle返回值为true时才会被调用),我们会将在preHandle方法中放入ThreadLocal中的user信息给到视图,这样就可以实现页面用户基本信息的携带

2 .错误

(1)在dao方法映射mapper文件时,当我带两个参数时,报错了,主要原因是没有带@Param注解
,导致找不到参数报错

(2)在前端专业选择上,连级的select标签,动态查询数据库,选择学校和专业上

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>志愿填报</title>
		<script src="https://code.jquery.com/jquery-3.1.1.min.js" crossorigin="anonymous"></script>
		<script src="js/target.js"></script>  
		<script>
		function start(hh){
			var  sex=[[${loginUser.sex}]];
			starttwo(hh,sex);
		}
		</script>
	</head>
	<body>
		<form action="/volunteer/addtarget" method="post" th:if="${one}=='0'">
			<div>
				<label>考生信息:</label>
				<a th:text="${loginUser.nameId}"></a><br>
				<a th:if="${loginUser.sex}==0">理科</a>
				<a th:if="${loginUser.sex}==1">文科</a>
			</div>
			<a>志愿一</a>
			<!-- <select id="school1" οnclick="selectone()"> -->
			<select id="school1" onclick="start(1)" name="school1">
				<option>请选择学校</option>
			</select>
			<select id="specialty" name="specialty">
				<option>请选择专业</option>
			</select>
			<br>
			<br>
			<a>志愿二</a>
			<select id="school2" onclick="start(2)" name="school2">
				<option>请选择学校</option>
			</select>
			<select id="specialty2" name="specialty2">
				<option>请选择专业</option>
			</select>
			<br>
			<br>
			<a>志愿三</a>
			<select id="school3" onclick="start(3)" name="school3">
				<option>请选择学校</option>
			</select>
			<select id="specialty3" name="specialty3">
				<option>请选择专业</option>
			</select>
			<br>
			<br>
			<a>志愿四</a>
			<select id="school4" onclick="start(4)" name="school4">
				<option>请选择学校</option>
			</select>
			<select id="specialty4" name="specialty4">
				<option>请选择专业</option>
			</select>
			<br>
			<br>
			<a>志愿五</a>
			<select id="school5" onclick="start(5)" name="school5">
				<option>请选择学校</option>
			</select>
			<select id="specialty5" name="specialty5">
				<option>请选择专业</option>
			</select>
			<br>
			<input type="submit" value="提交" />
		</form>
		<form action="/volunteer/addresults"  method="post" th:if="${one}=='1'">
			<a>您已报考,请提交成绩!</a>
			<a th:if="${class}==1">语文成绩:</a>
			<a th:if="${class}==0">高数成绩:</a>
			<input type="text" id="wz" name="wz" />
			<br>
			<a>政治成绩:</a>
			<input type="text" name="zz" id="zz"  />
			<br>
			<a>英语成绩:</a>
			<input type="text" name="yy" id="yy" />
			<br>
			<a>计算机成绩:</a>
			<input type="text" name="jsj" id="jsj" />
			<br>
			<input type="submit" value="提交成绩" />
		</form>
		<a th:if="${one}=='3'">成绩已提交,请等待公布考试结果!</a>
		<div th:if="${one}=='4'">
			<a>学校</a><a th:text="${schoolName}"></a>
			<a th:text="${SpecialtyName}"></a>
		</div>
	</body>
</html>

 function  selectone(hh){
			  var  school1=document.getElementById("school1").value;
			  if(school1!="请选择学校"){
				 
			  }else{
				  $.ajax({
					  url:"/school/SchoolSelect",
					  type:"post",
					  success: function(data){
						  $("#school1").empty();
						  data.forEach(function(item,index){
							  $("#school1").append("<option οnclick='"+"selectone1("+hh+")'>"+item+"</option>");
						  });
						  
					  }
				  });
			  }
		  }
  function  selectone1(hh){
			 var  school1=document.getElementById("school1").value;
			 var  specialty=document.getElementById("specialty").value;
			 if(school1!="请选择学校"){
				 if(specialty=="请选择专业"){
					 $.ajax({
					 		 url:"/volunteer/target",
							 type:"post",
					 		 data:{schoolname: school1,specialtyClass: hh},
					 		 success: function(twodata){
					 			 $("#specialty").empty();
					 			 twodata.forEach(function(i,t){
					 				 $("#specialty").append("<option>"+i+"</option>");
					 			 });
					 		 }
					 });
				 }
				 else{
				 					 $.ajax({
				 						 url:"/volunteer/target",
										 type:"post",
				 						 data:{schoolname: school1,specialtyClass: hh},
				 						 success: function(twodata){
				 							 $("#specialty").empty();
				 							 twodata.forEach(function(i,t){
				 								 $("#specialty").append("<option>"+i+"</option>");
				 							 });
				 						 }
				 					 });
				 }
			 }else{
				 alert("请先选择学校");
			 }
		  }

这里最终还是没有解决当第一次查询后,选择完毕之后,又会重新刷新,最后自己通过判断值有没有变化来刷新。

3.还需要加强的知识

1.jwt
2.事务处理
3.shiro

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷可是个天才

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值