项目搭建
这些文件得创建好
MySessionUtils
log4j.properties
SqlMapConfig.xml
映射文件 例如UserDao.xml
目录结构
- Web层
Servlet:前端控制器
html:视图
Filter:过滤器
BeanUtils:数据封装
Jackson:json序列化工具 - Service层
Javamail:java发送邮件工具
Redis:nosql内存数据库
Jedis:java的redis客户端 - Dao层
Mysql:数据库
Mybatis:对jdbc进行封装
对该项目进行分析
- 数据库创建
登录功能实现
- 分析登录功能
创建实例
User.java
src\main\java\com\vission\bean\User.java
public class User {
private int uid;
private String username;
private String password;
private String name;
private Date birthday;
private char sex;
private String telephone;
private String email;
private char status;
private String code;
.
.
.
}
src\main\java\com\vission\service\UserService.java
package com.vission.service;
import com.vission.bean.User;
import com.vission.dao.UserDao;
import com.vission.utils.MySessionUtils;
import org.apache.ibatis.session.SqlSession;
public class UserService {
public int login(User user){
SqlSession session = MySessionUtils.getSession();
UserDao userDao = session.getMapper(UserDao.class);
User u = userDao.findUserByUsername(user.getUsername());
if (u == null){
System.out.println("返回值-1");
return -1;
//未找到该用户
}else if ('Y' == u.getStatus()){
// System.out.println(u.getPassword()); //输出密码
if(u.getUsername().equals(user.getUsername()) && u.getPassword().equals(user.getPassword())){
//账号密码正确
System.out.println("返回值1");
return 1;
}else {
//账号密码错误
System.out.println("返回值-2");
System.out.println(user.getPassword());
return -2;
}
}else {
System.out.println("返回值-3");
//未激活
return -3;
}
}
}
loginServlet
src\main\java\com\vission\web\servlet\loginServlet.java
package com.vission.web.servlet;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.vission.bean.ResponseInfo;
import com.vission.bean.User;
import com.vission.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
System.out.println("你妈妈");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, String[]> map = request.getParameterMap();
User user = new User();
try {
//参1 javaBean 参2 map
BeanUtils.populate(user,map);//将map里面所有的参数赋值给javaBean
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
UserService userService = new UserService();
int code = userService.login(user);
ResponseInfo info = new ResponseInfo();
info.setCode(code);
if (code == 1) {
System.out.println("账号密码正确,且激活");
// info.setData("账号密码正确,且激活");
System.out.println(user);
}
if (code == -1) {
System.out.println("未找到该用户");
// info.setData("未找到该用户");
}
if (code == -2) {
System.out.println("账号密码错误");
info.setData("账号密码错误");
}
if (code == -3) {
System.out.println("未激活");
info.setData("未激活");
}
// 转成json
String json =new ObjectMapper().writeValueAsString(info);
response.getWriter().println(json);
}
}
jsp文件直接copy老师的
function checkUserName() {
//获取输入框的值
var username = $("#username").val();
//正则表达式 定义一个规则,执行test方法,符合规则返回true,否则返回false
var reg = /^\w{8,20}$/;
var flag = reg.test(username); //判断
//如果符合要求,设置输入框边框是正常,否则设置红色
if (flag) {
$("#username").css("border", "");
} else {
$("#username").css("border", "1px solid red");
}
//alert(flag)
return flag;
}
function checkPassword() {
//判断密码输入框的值是否合法
var username = $("#password").val();
var reg = /^\w{8,20}$/;
var flag = reg.test(username); //判断
if (flag) {
$("#password").css("border", "");//无色框
} else {
$("#password").css("border", "1px solid red");//红框
}
//alert(flag)
return flag;
}
$(function () {
$("#errorMsg").html("");
// 判断两个输入框架的是否格式正确
$("#username").blur(checkUserName);//输入框失去焦点
// 如果正确,使用ajax发送请求到servlet
$("#password").blur(checkPassword);
$("#btn_login").click(function () {
//要求两个值正确,我们才做提交
if (checkUserName() && checkPassword()) {
var un = $("#username").val()
var pw = $("#password").val()
//alert(un+pw)
//写提交
$.ajax({
url: "loginServlet",
async: true,
data: "username=" + un + "&password=" + pw,
type: "post",
dataType: "json",
success: function (data) {
// alert(data) {"code":1,"data":"登录成功"}
if (1 == data.code) {
//跳转到主页 index.html
$("#errorMsg").html("");
window.location = "index.html"
} else {
//显示在界面上
$("#errorMsg").html(data.data);
}
},
error: function () {
alert("服务器发生了错误")
}
});
}
})
})