发表于: 2018-03-02 23:10:54
0 614
今日完成:
1. 添加登陆web页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div class="container">
<h1>Welcome</h1>
<form action="/school/check" method="post">
<input name="name" type="text" placeholder="Username"><br/>
<input name="password" type="password" placeholder="Password"><br/><br/>
<button type="submit">Login</button>
<br/>
<br/>
<br/>
<br/>
</form>
</div>
2. 在tiles中添加sign_in项目,使用index模板
<!--singe_in项目-->
<definition name="tiles_index_sign_in" extends="layout">
<put-attribute name="title" value="登陆"/>
<put-attribute name="header" value="/WEB-INF/views/index_sign_in_header.jsp"/>
<put-attribute name="body" value="/WEB-INF/views/index_sign_in.jsp"/>
<put-attribute name="footer" value="/WEB-INF/views/index_footer.jsp"/>
<put-list-attribute name="cssPathList">
<add-attribute value="/css/base.css"></add-attribute>
<add-attribute value="/css/main.css"></add-attribute>
</put-list-attribute>
</definition>
3. 修改数据库表和mapper,为学生表添加password
通过name查找password
<select id="findPasswordByName" resultType="java.lang.String" parameterType="java.lang.String">
select password
from students
where name = #{name, jdbcType=VARCHAR}
</select>
4. 创建一个md5类对密码进行加密
public class MD5 {
public static final String KEY_MD5 = "MD5";
public static String getResult(String inputStr) {
BigInteger bigInteger = null;
try {
MessageDigest md = MessageDigest.getInstance(KEY_MD5);
byte[] inputData = inputStr.getBytes();
md.update(inputData);
bigInteger = new BigInteger(md.digest());
} catch (Exception e) {
e.printStackTrace();
}
return bigInteger.toString(16);
}
}
5. 在controller里添加一个跳转到登陆界面的地址
@RequestMapping("/sign_in")
public String signIn() {
return "tiles_index_sign_in";
}
6. 账号密码登陆检查
@RequestMapping(value = "/check", method = RequestMethod.POST)
public ModelAndView check(@RequestParam("name") String name, @RequestParam("password") String password) {
ModelAndView mav = new ModelAndView();
boolean check = false;
if (null != name && null != password && "" != name && "" != null) {
String md = MD5.getResult(password);
System.out.println(md);
check = schoolService.check(name, md);
}
mav.addObject("name", name);
mav.addObject("check", check);
mav.setViewName("checking");
return mav;
}
排除null和空的情况,使用md5加密
7. 登陆跳转jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>checking</title>
</head>
<body>
<c:if test="${true==check}">
<script>
alert("登陆成功");
window.location.href = "/school/index";
</script>
</c:if>
<c:if test="${false==check}">
<script>
alert("登陆失败");
window.location.href = "/school/sign_in"
</script>
</c:if>
</body>
</html>
这个界面的问题在于还不知道如何进行传值,不通过form表单
明日计划:
1. 使用Token跟踪用户状态
2. 实现拦截器
遇到的问题:
1. controller通过modelandview传值给jsp,jsp页面在不实用form表单的情况下将该值传给controller中的另一个jsp页面
2. 网上有多种DES实现方法,这个内容还需要加深
收获:
1. 实现通过form表单,使用md5加密,查找数据库完成登陆操作
2. Tiles框架和jstl练习使用
任务总结:
任务名称:JAVA=TASK4
成果链接:https://github.com/IT-xzy/Task/tree/master/Java/wuyiqiang/Task4-master
任务耗时:20180212-0303,共19天;未延期
技能脑图:附上个人和官方脑图(官方脑图在个人任务统计中可以看到)
任务总结:
a. 任务进度符合预期,国内放假回家耽误一些时间
b. 知识点基本都能涵盖到,json-taglib也有实现,脑图中漏掉了;
任务中遇到哪些疑难问题,最终是如何解决的,有哪些值得分享的收获
a. 任务没有延时,感觉任务四挺简单的,需要做的东西相对前三个任务来说比较少,但是网页这块的知识其实很多,以后需要多学习。
b. 在tiles框架这一块耽误时间很多,没问师兄,第二天才问,然后一个小时之内就解决了,少了两个jar包依赖。以后还是多问问题吧。
c. 脑图中画绿色的其实都只是使用过很简单的功能,并没有深入了解。需要学习的很多
评论