登录页面效果图
注册页面效果图
学生登录成功首页
修改密码页面效果图
修改用户信息页面效果图
管理员登陆成功首页
数据库表结构设计
用户表结构
管理员表结构
项目整体架构
dao层
package com.qf.dao;
import com.qf.vo.LoginUserVo;
public interface IAdminDao {
public int login(LoginUserVo user);
public int modifyPwd(String name, String newPwd);
}
package com.qf.dao;
import com.qf.entity.Student;
import com.qf.vo.LoginUserVo;
import java.util.List;
public interface IStudentDao {
public int login(LoginUserVo user);
public int register(Student stu);
public int modifyPwd(String uname, String newPwd);
public Student queryStudentByUname(String uname);
public int modifyStudent(Student stu);
public List<Student> queryStudentInformation();
public int deleteStudentInformation(String uname);
}
package com.qf.dao.impl;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.qf.dao.IAdminDao;
import com.qf.vo.LoginUserVo;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapHandler;
import java.sql.SQLException;
import java.util.Map;
public class AdminDaoImpl implements IAdminDao {
public QueryRunner qr=new QueryRunner(new ComboPooledDataSource());
public int login(LoginUserVo user) {
int result=0;
try {
String sql="select count(name) from admin where name=? and password=?";
Map<String, Object> resultMap=qr.query(sql,new MapHandler(),user.getName() ,user.getPassword());
result=Integer.valueOf(resultMap.get("count(name)").toString());
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public int modifyPwd(String name, String newPwd) {
int result=0;
try {
String sql="update admin set password=? where name=?";
result=qr.update(sql, newPwd,name);
}catch (Exception e){
e.printStackTrace();
}
return result;
}
}
package com.qf.dao.impl;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.qf.dao.IStudentDao;
import com.qf.entity.Student;
import com.qf.vo.LoginUserVo;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class StudentDaoImpl implements IStudentDao {
public QueryRunner qr=new QueryRunner(new ComboPooledDataSource());
public int login(LoginUserVo user) {
int result=0;
try {
String sql="select count(uname) from user where uname=? and pwd=?";
Map<String,Object> resultMap=qr.query(sql,new MapHandler(),user.getName() ,user.getPassword());
result=Integer.valueOf(resultMap.get("count(uname)").toString());
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public int register(Student stu) {
int result= 0;
try {
String sql="insert into user(uname,pwd,nickname,phonenumber) values(?,?,?,?)";
result = qr.update(sql, stu.getUname(),stu.getPwd(),stu.getNickname(),stu.getPhonenumber());
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public int modifyPwd(String uname, String newPwd) {
int result= 0;
try {
String sql="update user set pwd=? where uname=?";
result = qr.update(sql, newPwd,uname);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public Student queryStudentByUname(String uname) {
Student stu=null;
try {
String sql="select uname,pwd,nickname,phonenumber from user where uname=?";
stu=qr.query(sql,new BeanHandler<>(Student.class),uname);
} catch (Exception e) {
e.printStackTrace();
}
return stu;
}
public int modifyStudent(Student stu) {
int result= 0;
try {
String sql="update user set nickname=?,phonenumber=? where uname=?";
result = qr.update(sql, stu.getNickname(),stu.getPhonenumber(),stu.getUname());
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public List<Student> queryStudentInformation() {
List<Student> stus=new ArrayList<>();
try {
String sql="select uname,pwd,nickname,phonenumber from user";
stus=qr.query(sql,new BeanListHandler<>(Student.class));
} catch (Exception e) {
e.printStackTrace();
}
return stus;
}
public int deleteStudentInformation(String uname) {
int result= 0;
try {
String sql="delete from user where uname=?";
result = qr.update(sql,uname);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
}
entity层
package com.qf.entity;
public class Admin {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.qf.entity;
public class Student {
private String uname;
private String pwd;
private String nickname;
private String phonenumber;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getPhonenumber() {
return phonenumber;
}
public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}
@Override
public String toString() {
return "Student [uname=" + uname + ", pwd=" + pwd + ", nickname=" + nickname + ", phonenumber=" + phonenumber + "]";
}
}
service层
package com.qf.service;
import com.qf.vo.LoginUserVo;
public interface IAdminService {
int login(LoginUserVo user);
int modifyPwd(String name, String newPwd);
}
package com.qf.service;
import com.qf.entity.Student;
import com.qf.vo.LoginUserVo;
import java.util.List;
public interface IStudentService {
int register(Student stu);
int login(LoginUserVo user);
int modifyStudent(Student stu);
int modifyPwd(String name, String newPwd);
Student queryStudentByUname(String uname);
List<Student> queryStudentInformation();
int deleteStudentInformation(String uname);
}
package com.qf.service.impl;
import com.qf.dao.IAdminDao;
import com.qf.dao.impl.AdminDaoImpl;
import com.qf.service.IAdminService;
import com.qf.vo.LoginUserVo;
/**
* @Author LXM
* @Date 2020/3/30 0030
*/
public class AdminServiceImpl implements IAdminService {
IAdminDao adminDao=new AdminDaoImpl();
@Override
public int login(LoginUserVo user) {
return adminDao.login(user);
}
@Override
public int modifyPwd(String name, String newPwd) {
return adminDao.modifyPwd(name,newPwd);
}
}
package com.qf.service.impl;
import com.qf.dao.IStudentDao;
import com.qf.dao.impl.StudentDaoImpl;
import com.qf.entity.Student;
import com.qf.service.IStudentService;
import com.qf.vo.LoginUserVo;
import java.util.List;
/**
* @Author LXM
* @Date 2020/3/30 0030
*/
public class StudentServiceImpl implements IStudentService {
IStudentDao stuDao=new StudentDaoImpl();
@Override
public int register(Student stu) {
return stuDao.register(stu);
}
@Override
public int login(LoginUserVo user) {
return stuDao.login(user);
}
@Override
public int modifyStudent(Student stu) {
return stuDao.modifyStudent(stu);
}
@Override
public int modifyPwd(String name, String newPwd) {
return stuDao.modifyPwd(name,newPwd);
}
@Override
public Student queryStudentByUname(String uname) {
return stuDao.queryStudentByUname(uname);
}
@Override
public List<Student> queryStudentInformation() {
return stuDao.queryStudentInformation();
}
@Override
public int deleteStudentInformation(String uname) {
return stuDao.deleteStudentInformation(uname);
}
}
servlet层
package com.qf.servlet;
import cn.dsna.util.images.ValidateCode;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* Servlet implementation class CheckCodeServlet
*/
@WebServlet("/CheckCodeServlet")
public class CheckCodeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ValidateCode code=new ValidateCode(120, 30, 4, 2);
String codeString=code.getCode();
HttpSession session=request.getSession();
session.setAttribute("checkCode", codeString);
code.write(response.getOutputStream());
}
}
package com.qf.servlet;
import com.qf.entity.Student;
import com.qf.service.IAdminService;
import com.qf.service.IStudentService;
import com.qf.service.impl.AdminServiceImpl;
import com.qf.service.impl.StudentServiceImpl;
import com.qf.vo.LoginUserVo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
/**
* Servlet implementation class CommonServlet
*/
@WebServlet("/CommonServlet")
public class CommonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
IStudentService stuService=new StudentServiceImpl();
IAdminService adminService=new AdminServiceImpl();
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String method=request.getParameter("method");
if("getStudentByName".equals(method)) {
doGetStudentByName(request, response);
}else if("modifyPwd".equals(method)) {
doModifyPwd(request, response);
}else if("updateInformation".equals(method)) {
doUpdateInformation(request, response);
}else if("login".equals(method)) {
doLogin(request, response);
}else if("register".equals(method)) {
doRegister(request, response);
}
}
/**
* 添加或注册学生信息的方法
* @param request
* @param response
* @throws IOException
*/
private void doRegister(HttpServletRequest request, HttpServletResponse response) throws IOException {
Student stu=new Student();
stu.setUname(request.getParameter("uname"));
stu.setPwd(request.getParameter("pwd"));
stu.setNickname(request.getParameter("nickname"));
stu.setPhonenumber(request.getParameter("phonenumber"));
String flag=request.getParameter("flag1");
System.out.println(stu.toString());
int result=stuService.register(stu);
response.setContentType("text/html;charset=utf-8");
if(result>0) {
if("".equals(flag)||flag==null) {
response.getWriter().write("添加成功!");
response.setHeader("refresh", "3;url=qfonload.jsp");
}else {
response.sendRedirect("TeacherServlet?method=allStudent");
}
}else {
response.getWriter().write("添加失败!");
response.setHeader("refresh", "3;url=register.jsp");
}
}
/**
* 学生或老师登录的方法
* @param request
* @param response
* @throws UnsupportedEncodingException
* @throws ServletException
* @throws IOException
*/
private void doLogin(HttpServletRequest request, HttpServletResponse response)
throws UnsupportedEncodingException, ServletException, IOException {
LoginUserVo user=new LoginUserVo();
user.setName(request.getParameter("uname"));
user.setPassword(request.getParameter("pwd"));
user.setRole(request.getParameter("role"));
System.out.println(user.toString());
String rememberMe=request.getParameter("rememberMe");
String code=request.getParameter("code");
String checkCode=(String) request.getSession().getAttribute("checkCode");
if(code.equalsIgnoreCase(checkCode)) {
int result=0;
if("student".equals(user.getRole())) {
result=stuService.login(user);
}else if("teacher".equals(user.getRole())) {
result=adminService.login(user);
}
if(result!=0) {
if("on".equals(rememberMe)) {
Cookie c1=new Cookie("uname", URLEncoder.encode(user.getName(), "utf-8"));
Cookie c2=new Cookie("pwd", user.getPassword());
c1.setMaxAge(31536000);
c2.setMaxAge(31536000);
response.addCookie(c1);
response.addCookie(c2);
}
request.getSession().setAttribute("user", user);
request.getRequestDispatcher("programHomePage.jsp").forward(request, response);
}else {
response.setHeader("refresh", "3;url=qfonload.jsp");
}
}else {
response.setHeader("refresh", "3;url=qfonload.jsp");
}
}
/**
* 修改学生信息的方法
* @param request
* @param response
* @throws IOException
* @throws ServletException
*/
private void doUpdateInformation(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
Student stu=new Student();
stu.setUname(request.getParameter("uname"));
stu.setPwd(request.getParameter("pwd"));
stu.setNickname(request.getParameter("nickname"));
stu.setPhonenumber(request.getParameter("phonenumber"));
int result=stuService.modifyStudent(stu);
if(result!=0) {
response.getWriter().write("修改成功!");
LoginUserVo user=(LoginUserVo) request.getSession().getAttribute("user");
if("student".equals(user.getRole())) {
request.getRequestDispatcher("programHomePage.jsp").forward(request, response);
}else if("teacher".equals(user.getRole())) {
response.sendRedirect("TeacherServlet?method=allStudent");
}
}
}
/**
* 修改学生或老师密码的方法
* @param request
* @param response
* @throws IOException
*/
private void doModifyPwd(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html;chartset=utf-8");
LoginUserVo user=(LoginUserVo) request.getSession().getAttribute("user");
String newPwd=request.getParameter("newPwd");
int result=0;
if("student".equals(user.getRole())) {
result= stuService.modifyPwd(user.getName(),newPwd);
}else if("teacher".equals(user.getRole())) {
result= adminService.modifyPwd(user.getName(),newPwd);
}
if (result>0) {
response.getWriter().write("修改成功!");
response.setHeader("refresh", "3;url=qfonload.jsp");
} else {
response.getWriter().write("修改失败!");
response.setHeader("refresh", "3;url=modifyPassword.jsp");
}
}
/**
* 通过用户名得到学生或老师对象
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void doGetStudentByName(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
LoginUserVo user=(LoginUserVo) request.getSession().getAttribute("user");
String uname=null;
if("student".equals(user.getRole())) {
uname=user.getName();
}else if("teacher".equals(user.getRole())) {
uname=request.getParameter("uname");
}
Student stu=stuService.queryStudentByUname(uname);
request.setAttribute("stu", stu);
request.getRequestDispatcher("modifyUserInformation.jsp").forward(request, response);
}
}
package com.qf.servlet;
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;
/**
* Servlet implementation class StudentServlet
*/
@WebServlet("/StudentServlet")
public class StudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String method=request.getParameter("method");
if("exit".equals(method)) {
doExit(request, response);
}
}
/**
* 注销学生用户的方法
* @param request
* @param response
* @throws IOException
*/
private void doExit(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.getSession().removeAttribute("user");
response.sendRedirect("qfonload.jsp");
}
}
package com.qf.servlet;
import com.qf.entity.Student;
import com.qf.service.IAdminService;
import com.qf.service.IStudentService;
import com.qf.service.impl.AdminServiceImpl;
import com.qf.service.impl.StudentServiceImpl;
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.util.List;
/**
* Servlet implementation class TeacherServlet
*/
@WebServlet("/TeacherServlet")
public class TeacherServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
IAdminService adminService=new AdminServiceImpl();
IStudentService stuService=new StudentServiceImpl();
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String method=request.getParameter("method");
if("deleteStudent".equals(method)) {
dodeleteStudent(request, response);
}else if("allStudent".equals(method)) {
doAllStudent(request, response);
}else if("add".equals(method)) {//带个标记跳转到学生添加页面
request.setAttribute("flag", "add");
request.getRequestDispatcher("register.jsp").forward(request, response);
}
}
/**
* 查询所有学生信息
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
private void doAllStudent(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Student> stus=stuService.queryStudentInformation();
request.setAttribute("stus", stus);
request.getRequestDispatcher("manageStudent.jsp").forward(request, response);
}
/**
* 删除学生信息
* @param request
* @param response
* @throws IOException
* @throws ServletException
*/
private void dodeleteStudent(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String uname=request.getParameter("uname");
int result=stuService.deleteStudentInformation(uname);
doAllStudent(request, response);
}
}
vo层
package com.qf.vo;
public class LoginUserVo {
private String name;
private String password;
private String role;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public String toString() {
return "LoginUserVo [name=" + name + ", password=" + password + ", role=" + role + "]";
}
}
c3p0配置文件
#
# This file is detritus from various testing attempts
# the values below may change, and often do not represent
# reasonable values for the parameters.
#
#c3p0.testConnectionOnCheckout=true
#c3p0.testConnectionOnCheckin=true
#c3p0.minPoolSize=3
#c3p0.maxPoolSize=20
#c3p0.checkoutTimeout=2000
#c3p0.idleConnectionTestPeriod=5
#c3p0.maxConnectionAge=10
#c3p0.maxIdleTime=2
#c3p0.maxIdleTimeExcessConnections=1
#c3p0.propertyCycle=1
#c3p0.numHelperThreads=10
#c3p0.unreturnedConnectionTimeout=15
#c3p0.debugUnreturnedConnectionStackTraces=true
#c3p0.maxStatements=30
#c3p0.maxStatementsPerConnection=5
#c3p0.maxAdministrativeTaskTime=3
#c3p0.preferredTestQuery=SELECT 1
#c3p0.preferredTestQuery=SELECT a FROM emptyyukyuk WHERE a = 5
#c3p0.preferredTestQuery=SELECT a FROM testpbds WHERE a = 5
#c3p0.usesTraditionalReflectiveProxies=true
#c3p0.automaticTestTable=PoopyTestTable
#c3p0.acquireIncrement=4
#c3p0.acquireRetryDelay=1000
#c3p0.acquireRetryAttempts=60
#c3p0.connectionTesterClassName=com.mchange.v2.c3p0.test.AlwaysFailConnectionTester
#c3p0.initialPoolSize=10
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/lianxi
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.user=root
c3p0.password=147258
#c3p0.user=poop
#c3p0.password=scoop
#com.mchange.v2.log.MLog=com.mchange.v2.log.log4j.Log4jMLog
#com.mchange.v2.log.MLog=com.mchange.v2.log.jdk14logging.Jdk14MLog
#com.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog
#com.mchange.v2.log.NameTransformer=com.mchange.v2.log.PackageNames
#com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=ALL
#com.mchange.v2.c3p0.VMID=poop
配置默认起始页
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>qfonload.jsp</welcome-file>
</welcome-file-list>
</web-app>
管理学生页面前端代码
<%@page import="com.qf.entity.Student"%>
<%@page import="java.util.List"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>管理学生页面</title>
<style type="text/css">
table{
height: auto;
margin: 0px auto;
background-color: #f3f3f3;
}
h1{
color:blue;
text-align: center;
}
#d1{
text-align: center;
font-weight:bolder ;
}
a{
text-decoration: none;
color: black;
}
</style>
<script type="text/javascript">
function deleteStu(name1){
var result=confirm("确定要删除这个学生信息?")
if(result){
window.location="TeacherServlet?method=deleteStudent&uname="+name1;
}
}
function modifyStu(name2){
location.href="CommonServlet?method=getStudentByName&uname="+name2;
}
</script>
</head>
<body>
<c:set var="stus" value="${requestScope.stus}"></c:set>
<h1>管理学生页面</h1>
<table border="1">
<tr id="d1">
<td>用户名</td>
<td>昵称</td>
<td>手机号</td>
<td>操作</td>
</tr>
<c:forEach var="s" items="${stus}">
<tr>
<td>${s.uname}</td>
<td>${s.nickname}</td>
<td>${s.phonenumber}</td>
<td>
<input type="button" value="修改" onclick="modifyStu('${s.uname}')" />
<input type="button" value="删除" onclick="deleteStu('${s.uname}')" />
</td>
</tr>
</c:forEach>
<tr>
<td colspan="4" id="d1"><a href="TeacherServlet?method=add">添加学生信息</a></td>
</table>
</body>
</html>
修改密码页面前端代码
<%@page import="com.qf.vo.LoginUserVo"%>
<%@page import="com.qf.entity.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
form{
width: 450px;
height: 260px;
margin: 0px auto;
border: solid 1px black;
background-color: #f3f3f3;
padding-left:80px;
}
h1{
color:blue;
padding-left:80px;
}
#d1{
margin-left:125px;
}
</style>
<script type="text/javascript">
//验证原密码
function isOldPwd(){
//获得用户输入的原密码
var oldPwd=document.getElementById("oldPwd").value;
//获得当前用户登录的密码
var old=document.getElementById("old").value;
if(old==oldPwd){
document.getElementById("oldPwd1").innerHTML="";
return true;
}else{
document.getElementById("oldPwd1").style.color="red";
document.getElementById("oldPwd1").innerHTML="原密码输入有误!";
return false;
}
}
//验证新密码和确认新密码
function isReNewPwd(){
//获得用户输入的新密码
var newPwd=document.getElementById("newPwd").value;
//获得用户输入的确认的新密码
var reNewPwd=document.getElementById("reNewPwd").value;
//获得当前用户登录的密码
var old=document.getElementById("oldPwd").value;
//密码正则表达式
var regPwd=/^\d{6}$/;
if(reNewPwd==old){
document.getElementById("reNewPwd1").style.color="red";
document.getElementById("reNewPwd1").innerHTML="新密码和原密码相同!";
return false;
}else if(regPwd.test(reNewPwd)&&newPwd==reNewPwd){
document.getElementById("reNewPwd1").innerHTML="";
return true;
}else{
document.getElementById("reNewPwd1").style.color="red";
document.getElementById("reNewPwd1").innerHTML="两次输入的密码不一致!";
return false;
}
}
//表单提交事件
function check(){
var oldPwd=isOldPwd();
var newPwd=isReNewPwd();
if(oldPwd&&newPwd){
return true;
}else{
return false;
}
}
</script>
</head>
<body>
<!--表单-->
<form method="post" action="CommonServlet?method=modifyPwd" onsubmit="return check()">
<h1>修改密码页面</h1>
<table>
<tr>
<td></td>
<td></td>
<!-- 巧用隐藏域将密码存在html页面中,方便js获得原密码 -->
<td><input type="hidden" id="old" name="old" value="${user.password}"/></td>
</tr>
<tr>
<td>原密码:</td>
<!-- 表达式,在浏览中输出变量的值 -->
<td><input type="password" id="oldPwd" name="oldPwd" onblur="isOldPwd()" /></td>
<td id="oldPwd1">请输入原密码</td>
</tr>
<tr>
<td>新密码:</td>
<!-- 表达式,在浏览中输出变量的值 -->
<td><input type="password" id="newPwd" name="newPwd" /></td>
<td id="newPwd1">必填项,6位数字</td>
</tr>
<tr>
<td>确认新密码:</td>
<!-- 表达式,在浏览中输出变量的值 -->
<td><input type="password" id="reNewPwd" name="reNewPwd" onblur="isReNewPwd()" /></td>
<td id="reNewPwd1">与新密码保持一致</td>
</tr>
</table>
<p id="d1">
<!--提交按纽-->
<input type="submit" value="修改"/>
<!--重置按纽-->
<input type="reset" value="重置"/>
</p>
</form>
</body>
</html>
注册页面前端代码
<%@page import="com.qf.entity.Student"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册页面</title>
<style type="text/css">
body{
margin: 0px;
padding: 0px;
font-size:20px;
font-weight: bolder;
}
div{
width:300px;
height:230px;
margin: 0px auto;
background-color: #f3f3f3;
border: solid 1px black;
padding: 30px;
padding-top: 0px;
}
td{
line-height: 30px;
margin-top:20px;
text-align:center;
}
#d2{
font-size: 10px;
font-weight: normal;
text-align:left;
line-height: 10px;
}
#d3{
text-align:right;
}
p{
color: blue;
font-size: 25px;
text-align:center;
}
#d4{
margin-left: 30px;
margin-top: 20px;
}
</style>
<script type="text/javascript">
function isNickname(){
var nickname=document.getElementById("nickname").value;
var regNickname = /^([\u4e00-\u9fa5]{2,4})|([A-Za-z0-9_]{4,16})|([a-zA-Z0-9_\u4e00-\u9fa5]{3,16})$/;
if(regNickname.test(nickname)){
return true;
}else{
return false;
}
}
function isPhonenumber(){
var phonenumber=document.getElementById("phonenumber").value;
var regPhonenumber=/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/
if(regPhonenumber.test(phonenumber)){
return true;
}else{
return false;
}
}
function check(){
var nicknameResult=isNickname();
var phonenumberResult=isPhonenumber();
if(nicknameResult&&phonenumberResult){
return true;
}else{
return false;
}
}
</script>
</head>
<body>
<c:set var="stu" value="${requestScope.stu}"></c:set>
<div>
<p>修改学生信息页面</p>
<form method="post" action="CommonServlet?method=updateInformation" onsubmit="return check()">
<table>
<tr>
<td id="d3">账号:</td>
<td><input type="text" name="uname" id="uanme" onblur="isUname()" readonly="readonly" value="${stu.uname}" /></td>
</tr>
<tr>
<td></td>
<td id="d2">账号长度5-10,第一个必须是字母</td>
</tr>
<tr>
<td id="d3">昵称:</td>
<td><input type="text" name="nickname" id="nickname" onblur="isNickname()" value="${stu.nickname}"/></td>
</tr>
<tr>
<td id="d3">手机号:</td>
<td><input type="text" name="phonenumber" id="phonenumber" onblur="isPhonenumber()" value="${stu.phonenumber}" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value=" 提交 " id="d4" /><input id="d4" type="reset" value=" 重置 " /></td>
</tr>
</table>
</form>
</div>
</body>
</html>
登录后首页前端代码
<%@page import="com.qf.vo.LoginUserVo"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
<style type="text/css">
div{
width:350px;
height:300px;
margin: 0px auto;
background-color: #f3f3f3;
border: solid 1px black;
}
h1{
color:blue;
text-align: center;
}
h3{
color:gray;
text-align: center;
}
a{
text-decoration: none;
color: black;
}
</style>
</head>
<body>
<c:choose>
<c:when test="${sessionScope.user==null}">
<h1>你还没有登录,3秒后跳转到登录页面</h1>
<meta http-equiv="refresh" content="3;url=qfonload.jsp"/>
</c:when>
<c:when test="${sessionScope.user.role=='student'}">
<div>
<h1>学生后台首页</h1>
<br/>
<h3><a href="modifyPassword.jsp">修改密码</a></h3>
<h3><a href="CommonServlet?method=getStudentByName">修改用户信息</a></h3>
<h3><a href="StudentServlet?method=exit">注销</a></h3>
</div>
</c:when>
<c:when test="${sessionScope.user.role=='teacher'}">
<div>
<h1>教师后台首页</h1>
<br/>
<br/>
<h3><a href="modifyPassword.jsp">修改密码</a></h3>
<h3><a href="TeacherServlet?method=allStudent">管理学生</a></h3>
</div>
</c:when>
</c:choose>
</body>
</html>
登录页面css样式及jsp页面代码
<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
<link rel="stylesheet" href="qfonload.css" />
<script type="text/javascript">
function isUname(){
var uname=document.getElementById("uName").value;
var regUname=/^[0-9a-zA-Z_]{1,}$/;
if (regUname.test(uname)) {
return true;
} else{
return false;
}
}
function ispwd(){
var pwd=document.getElementById("pwd").value;
var regpwd=/^[0-9a-zA-Z]{6,12}$/;
if (regpwd.test(pwd)) {
return true;
} else{
return false;
}
}
function isCode(){
var code=document.getElementById("code").value;
if (code.length==4) {
return true;
}else{
alert("验证码的输入有误!");
return false;
}
}
function nolook(){
document.getElementById("ckcode").src="CheckCodeServlet?a="+new Date();
}
function check() {
var unameResult=isUname();
var pwdResult=ispwd();
var codeResult=isCode();
if(unameResult&&pwdResult&&codeResult){
return true;
}else{
nolook();
return false;
}
}
</script>
</head>
<body>
<%
String uname="";
String pwd="";
Cookie co[]=request.getCookies();
if(co!=null){
for(Cookie c:co){
if(c.getName().equals("uname")){
uname=URLDecoder.decode(c.getValue(), "utf-8");
}else if(c.getName().equals("pwd")){
pwd=c.getValue();
}
}
}
request.setAttribute("uname", uname);
request.setAttribute("pwd", pwd);
%>
<h1>千峰学员系统</h1>
<div>
<form method="post" action="CommonServlet?method=login" onsubmit="return check()">
<table>
<tr>
<td>账号</td>
<td><input type="text" name="uname" id="uname" onblur="isUname()" value="${uname}" /> </td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="pwd" id="pwd" onblur="isPwd()" value="${pwd}" /> </td>
</tr>
<tr>
<td>验证码</td>
<td><input type="text" name="code" id="code" onblur="isCode()" /> </td>
</tr>
<tr>
<td colspan="2"><img id="ckcode" src="CheckCodeServlet" onclick="nolook()"/><a onclick="nolook()">看不清,点我刷新试试</a> </td>
</tr>
<tr>
<td>选择身份</td>
<td>
<input type="radio" name="role" value="student" checked="checked" />学生
<input type="radio" name="role" value="teacher" />老师
</td>
</tr>
<tr>
<td colspan="2" id="rememberMe"><input type="checkbox" name="rememberMe"/>记住账号密码 </td>
</tr>
<tr>
<td colspan="2" id="submit"><input type="submit" value=" 登录 "/></td>
</tr>
<tr>
<td colspan="2" id="register"><a href="register.jsp">没有账号?点击注册</a></td>
</tr>
</table>
</form>
</div>
</body>
</html>
@charset "UTF-8";
body{
margin: 0px;
padding: 0px;
font-size:15px;
font-weight: bolder;
}
h1{
color:blue;
height:60px;
text-align:center;
}
div{
width:250px;
height:250px;
margin: 0px auto;
background-color: #f3f3f3;
border: solid 1px black;
padding: 30px;
}
td{
line-height: 30px;
margin-top:20px;
}
body a{
font-size:10px;
font-weight: normal;
}
#rememberMe{
font-size: 10px;
text-align: center;
}
#submit{
text-align: center;
}
#register{
text-align: center;
}
注册页面css样式及jsp页面代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册页面</title>
<link rel="stylesheet" href="register.css" />
<script type="text/javascript">
function isUname(){
var uname=document.getElementById("uname").value;
var regUname=/^[a-zA-Z]\w{4,9}$/
if(regUname.test(uname)&&uname!=null){
return true;
}else{
return false;
}
}
function isPwd(){
var pwd=document.getElementById("pwd").value;
var regPwd=/^[a-zA-Z]{4}\[0-9a-zA-Z!@#$^]{1,6}$/
if(regPwd.test(pwd)&&pwd!=null){
return true;
}else{
return false;
}
}
function isNickname(){
var nickname=document.getElementById("nickname").value;
var regNickname = /^([\u4e00-\u9fa5]{2,4})|([A-Za-z0-9_]{4,16})|([a-zA-Z0-9_\u4e00-\u9fa5]{3,16})$/;
if(regNickname.test(nickname)&&nickname!=null){
return true;
}else{
return false;
}
}
function isPhonenumber(){
var phonenumber=document.getElementById("phonenumber").value;
var regPhonenumber=/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/
if(regPhonenumber.test(phonenumber)&&phonenumber!=null){
return true;
}else{
return false;
}
}
function check(){
var unameResult=isUname();
var pwdResult=isPwd();
var nicknameResult=isNickname();
var phonenumberResult=isPhonenumber();
if(unameResult&&pwdResult&&nicknameResult&&phonenumberResult){
return true;
}else{
return false;
}
}
</script>
</head>
<body>
<div>
<p>添加学生信息</p>
<form method="post" action="CommonServlet?method=register" onsubmit="return check()">
<input type="hidden" name="flag1" value="${flag }" />
<table>
<tr>
<td id="d3">账号:</td>
<td><input type="text" name="uname" id="uanme" onblur="isUname()" /></td>
</tr>
<tr>
<td></td>
<td id="d2">账号长度5-10,第一个必须是字母</td>
</tr>
<tr>
<td id="d3">密码:</td>
<td><input type="password" name="pwd" id="pwd" onblur="isPwd()" /></td>
</tr>
<tr>
<td></td>
<td id="d2">密码长度5-10,前四个是字母</td>
</tr>
<tr>
<td id="d3">昵称:</td>
<td><input type="text" name="nickname" id="nickname" onblur="isNickname()" /></td>
</tr>
<tr>
<td id="d3">手机号:</td>
<td><input type="text" name="phonenumber" id="phonenumber" onblur="isPhonenumber()" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value=" 提交 " id="d4" />
<input id="d4" type="reset" value=" 重置 " />
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
@charset "UTF-8";
body{
margin: 0px;
padding: 0px;
font-size:20px;
font-weight: bolder;
}
div{
width:300px;
height:280px;
margin: 0px auto;
background-color: #f3f3f3;
border: solid 1px black;
padding: 30px;
padding-top: 0px;
}
td{
line-height: 30px;
margin-top:20px;
text-align:center;
}
#d2{
font-size: 10px;
font-weight: normal;
text-align:left;
line-height: 10px;
}
#d3{
text-align:right;
}
p{
color: blue;
font-size: 25px;
text-align:center;
}
#d4{
margin-left: 30px;
margin-top: 20px;
}