第一个功能,就是教师与学生的登陆和注册,废话少说,开撸
数据表(暂定):
目录结构:
代码略多,但大多数逻辑相同每个就举一个例子
Dao:
package Dao.Impl;
import Dao.UserDao;
import Domain.User;
import Utils.JDBCUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import java.sql.SQLException;
public class UserDaoImpl implements UserDao {
// 创建jdbcUtils
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
public boolean register(User user) throws SQLException {
// 注册前判断是否已经存在,包括手机号和类型
String sql2="select * from user where phone = ? and IDType = ?";
User query = queryRunner.query(sql2, new BeanHandler<User>(User.class), user.getPhone(),user.getIDtype());
// 不存在
if (query==null) {
String sql = "insert into user values(?,?,?,?,?,?,?,?,?)";
int result = queryRunner.update(sql,
user.getId(),
user.getNickname(),
user.getUsernumber(),
user.getPhone(),
user.getPassword(),
user.getPicture(),
user.getSex(),
user.getSignature(),
user.getIDtype());
if (result > 0) {
return true;//注册成功
} else {
return false;//注册失败
}
// 账号已存在
}else{
return false;
}
}
@Override
public User login(String phone, String password, String IDType) throws SQLException {
String sql="select * from user where phone=? and password = ? and IDType= ?";
User query = queryRunner.query(sql, new BeanHandler<User>(User.class),phone,password,IDType);
return query;
}
@Override
public User select(String id ) throws SQLException {
String sql="select * from user where id = ?";
User query = queryRunner.query(sql, new BeanHandler<User>(User.class),id);
if (query!=null){
return query;
}else{
return null;
}
}
}
Domain
personStuJson(用于给前台传递json对象)
package Domain;
public class PersonStuJson {
private String id;
private String nickname;
private String usernumber;
private String phone;
private int sex;
@Override
public String toString() {
return "PersonStuJson{" +
"id='" + id + '\'' +
", nickname='" + nickname + '\'' +
", usernumber='" + usernumber + '\'' +
", phone='" + phone + '\'' +
", sex='" + sex + '\'' +
'}';
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getUsernumber() {
return usernumber;
}
public void setUsernumber(String usernumber) {
this.usernumber = usernumber;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
}
Service
UserService(接口)
public interface UserService {
// 注册
public boolean register(User user) throws SQLException;
// 登陆
public User login(String phone,String password,String IDType) throws SQLException;
// 根据id查找
public User select(String id) throws SQLException;
}
Servlet
RegisterServlet:
package Servlet;
import Domain.User;
import Service.Impl.UserServiceImpl;
import Service.UserService;
import Utils.CreateUUID;
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 java.io.PrintWriter;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet(name = "RegisterServlet")
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置编码
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("gb2312");
// 设置输出
PrintWriter out = response.getWriter();
// 获得值
String nickname = request.getParameter("nickname");
String phone = request.getParameter("phone");
String password = request.getParameter("password");
String person = request.getParameter("person");
// System.out.println(nickname+"---"+usernumber+"---"+password+"---"+person);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
CreateUUID uuid = new CreateUUID();
System.out.println(df.format(new Date()));
// 封装JavaBean
User user = new User();
user.setId(uuid.createUUID());
user.setNickname(nickname);
user.setPhone(phone);
user.setPassword(password);
user.setPicture(null);
user.setSex(2);
user.setSignature(null);
user.setIDtype(Integer.parseInt(person));
// 存入数据库
UserService userService = new UserServiceImpl();
boolean result = false;
try {
result = userService.register(user);
} catch (SQLException e) {
e.printStackTrace();
}
if (result){
out.print("注册成功");
}
else{
out.print("注册失败");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
前台html:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery-3.3.1.js"></script>
</head>
<script>
window.onload=function () {
// 通过后台传值判断页面显示登陆注册或者个人中心和注销
$.getJSON(
"person",
function (result) {
var json = eval(result);
if (json.person.id != null) {
if (json.person.iDType == 0) {
$("#top").html(
"<a href='personStudent.html?id=" + json.person.id + "'>个人中心</a><br>" +
"<a href='destroy'>注销</a>"
)
} else if (json.person.iDType == 1) {
$("#top").html(
"<a href='personTeacher.html?id=" + json.person.id + "'>个人中心</a><br>"+
"<a href='destroy'>注销</a>"
)
} else if (json.person.iDType == 2) {
$("#top").html(
"<a href='personOther.html?id=" + json.person.id + "'>个人中心</a><br>" +
"<a href='destroy'>注销</a>"
)
}
}
}
)
}
</script>
<body>
<div id="top">
<a href='register.html'>点此注册</a><br>
<a href='login.html'>点此登陆</a><br>
</div>
</body>
</html>
personStu.html(显示学生个人信息)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery-3.3.1.js"></script>
</head>
<script>
window.onload = function () {
// 获取url的id
function getQueryString(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
// 获取id
var id = getQueryString("id");
// alert(id);
$.getJSON(
"PersonStu",
// 传递id
{"id":id},
function (result) {
var json = eval(result);
$("#StuId").append(json.PersonStu.id);
$("#StuNickname").append(json.PersonStu.nickname);
$("#StuNumber").append(json.PersonStu.number);
$("#StuPhone").append(json.PersonStu.phone);
if (json.PersonStu.sex==2)
$("#StuSex").append("保密");
}
)
}
</script>
<body>
<div>
<span>同学好</span><br>
<span>您的id是: <span id="StuId"></span></span><br>
<span>您的nickname是: <span id="StuNickname"></span></span><br>
<span>您的usernumber是: <span id="StuNumber"></span></span><br>
<span>您的phone是: <span id="StuPhone"></span></span><br>
<span>您的sex是: <span id="StuSex"></span></span><br>
</div>
</body>
</html>
运行效果:
学生登陆和注册
教师登陆和注册
错误登陆(学生账号登陆教师)
代码大部分都大同小异,因为有三个角色(学生,教师,管理员),所以要写三个个人中心页面(学生查看课程,教师上传课程,管理员管理轮播图及推荐视频),index.html显示个人中心或者登陆注册时,用到了session域,登陆成功后,生成一个session,再传给另一个servlet,用于前台ajax获取,注销就是销毁session,显示个人中心通过js解析url,获得id值,再ajax传给servlet,返回json,用于显示。
注:所用jar包在前几篇博客中都有。