Servlet+jsp信息管理系统
技术需求:Servlet+JSP+MVC+JDBC
软件需求:Eclipse、MySQL数据库、tomcat、火狐浏览器
硬件需求:电脑一台
1. 功能需求:
完成用户登录
完成用户注册
完成用户退出
完成个人信息查看
完成修改密码
完成查询所有用户信息
2. 设计数据库:
创建用户表:
表名:t_user
字段名、类型(int、varchar、char)、约束(主键、非空、自增)
CREATE TABLE t_user(
uid int(10) not null auto_increment,
uname varchar(100) not null,
pwd VARCHAR(100) not null,
sex char(2) not null,
age int(3),
birth date,
primary key(uid)
)
INSERT into t_user VALUE(default,'张三','123', 1, 18, '2000-10-10');
INSERT into t_user VALUE(default,'李四','123', '1', 18, '2000-10-10');
SELECT * from t_user;
3. 功能设计
3.1 用户登录:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE >
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>欢迎登录后台管理系统</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" src="js/jquery.js"></script>
<script src="js/cloud.js" type="text/javascript"></script>
<script language="javascript">
$(function(){
$('.loginbox').css({'position':'absolute','left':($(window).width()-692)/2});
$(window).resize(function(){
$('.loginbox').css({'position':'absolute','left':($(window).width()-692)/2});
})
});
</script>
</head>
<body >
<%
//声明java代码块进行错误提示语的逻辑校验
Object obj=request.getAttribute("flag");
if(obj!=null){
%>
<div style="text-align: center;">
<span style="font-size: 15px;color:darkred;font-weight: bold;">用户名或者密码错误</span>
</div>
<%} %>
<%
//声明java代码块进行密码修改提示语
Object pwd=session.getAttribute("pwd");
if(pwd!=null){
%>
<div style="text-align: center;">
<span style="font-size: 15px;color:darkred;font-weight: bold;">密码修改成功</span>
</div>
<%}
session.removeAttribute("pwd");
%>
<%
//声明java代码块进行注册提示语
Object reg=session.getAttribute("reg");
if(reg!=null){
%>
<div style="text-align: center;">
<span style="font-size: 15px;color:darkred;font-weight: bold;">注册成功</span>
</div>
<%}
session.removeAttribute("reg");
%>
<div class="loginbox loginbox1">
<form action="user" method="post">
<input type="hidden" name="oper" value="login" />
<ul>
<li><input name="uname" type="text" placeholder="用户名" /></li>
<li><input name="pwd" type="password" placeholder="密码" /></li>
<li><input name="" type="submit" class="loginbtn" value="登录"
onclick="javascript:window.location='main.html'" /></li>
</ul>
</form>
</div>
</div>
</body>
</html>
bean文件:
package com.shenzhou.keji.xinxi.bean;
public class User {
private int uid;
private String uname;
private String pwd;
private String sex;
private int age;
private String birth;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
@Override
public String toString() {
return "User [uid=" + uid + ", uname=" + uname + ", pwd=" + pwd
+ ", sex=" + sex + ", age=" + age + ", birth=" + birth + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((birth == null) ? 0 : birth.hashCode());
result = prime * result + ((pwd == null) ? 0 : pwd.hashCode());
result = prime * result + ((sex == null) ? 0 : sex.hashCode());
result = prime * result + uid;
result = prime * result + ((uname == null) ? 0 : uname.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (age != other.age)
return false;
if (birth == null) {
if (other.birth != null)
return false;
} else if (!birth.equals(other.birth))
return false;
if (pwd == null) {
if (other.pwd != null)
return false;
} else if (!pwd.equals(other.pwd))
return false;
if (sex == null) {
if (other.sex != null)
return false;
} else if (!sex.equals(other.sex))
return false;
if (uid != other.uid)
return false;
if (uname == null) {
if (other.uname != null)
return false;
} else if (!uname.equals(other.uname))
return false;
return true;
}
public User() {
super();
}
public User(int uid, String uname, String pwd, String sex, int age,
String birth) {
super();
this.uid = uid;
this.uname = uname;
this.pwd = pwd;
this.sex = sex;
this.age = age;
this.birth = birth;
}
public User(String uname, String pwd, String sex, int age,
String birth) {
super();
this.uname = uname;
this.pwd = pwd;
this.sex = sex;
this.age = age;
this.birth = birth;
}
}
dao接口
package com.shenzhou.keji.xinxi.dao;
import java.util.List;
import com.shenzhou.keji.xinxi.bean.User;
public interface UserDao {
/**
* 根据用户名和密码查询用户信息
* @param uname 用户名
* @param pwd 密码
* @return 返回查询到的用户信息
*/
User checkUserLoginDao(String uname,String pwd);
/**
* 根据用户ID修改用户密码
* @param newPwd
* @param uid
* @return
*/
int userChangePwdDao(String newPwd, int uid);
/**
* 获取所有的用户信息
* @return
*/
List<User> userShowDao();
/**
* 用户注册
* @param u
* @return
*/
int userRegDao(User u);
}
package com.shenzhou.keji.xinxi.dao.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.shenzhou.keji.xinxi.bean.User;
import com.shenzhou.keji.xinxi.dao.UserDao;
public class UserDaoImpl implements UserDao{
//根据用户名和密码查询用户信息
@Override
public User checkUserLoginDao(String uname, String pwd) {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
//声明变量
User u=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/ademo","root", "123456");
String sql="select * from t_user where uname=? and pwd=?";
ps=conn.prepareStatement(sql);
ps.setString(1, uname);
ps.setString(2, pwd);
rs=ps.executeQuery();
while(rs.next()){
u=new User();
u.setUid(rs.getInt("uid"));
u.setUname(rs.getString("uname"));
u.setPwd(rs.getString("pwd"));
u.setSex(rs.getString("sex"));
u.setAge(rs.getInt("age"));
u.setBirth(rs.getString("birth"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭资源
try {
rs.close();
ps.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//返回结果
return u;
}
//根据用户ID修改用户密码
@Override
public int userChangePwdDao(String newPwd, int uid) {
Connection conn=null;
PreparedStatement ps=null;
int index=-1;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/ademo","root", "123456");
String sql="update t_user set pwd=? where uid=?";
ps=conn.prepareStatement(sql);
ps.setString(1, newPwd);
ps.setInt(2, uid);
//执行
index=ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{//关闭资源
try {
ps.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//返回结果
return index;
}
//获取所有的用户信息
@Override
public List<User> userShowDao() {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
//声明变量
List<User> lu=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/ademo","root", "123456");
String sql="select * from t_user";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
lu=new ArrayList<User>();
while(rs.next()){
//给变量赋值
User u=new User();
u.setUid(rs.getInt("uid"));
u.setUname(rs.getString("uname"));
u.setPwd(rs.getString("pwd"));
u.setSex(rs.getString("sex"));
u.setAge(rs.getInt("age"));
u.setBirth(rs.getString("birth"));
//将对象存储到集合中
lu.add(u);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭资源
try {
rs.close();
ps.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//返回结果
return lu;
}
//用户注册
@Override
public int userRegDao(User u) {
Connection conn=null;
PreparedStatement ps=null;
int index=-1;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/ademo","root", "123456");
String sql="insert into t_user values(default,?,?,?,?,?)";
ps=conn.prepareStatement(sql);
ps.setString(1,u.getUname());
ps.setString(2, u.getPwd());
ps.setString(3, u.getSex());
ps.setInt(4, u.getAge());
ps.setString(5, u.getBirth());
index=ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{//关闭资源
try {
ps.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//返回结果
return index;
}
}
service接口:
package com.shenzhou.keji.xinxi.service;
import java.util.List;
import com.shenzhou.keji.xinxi.bean.User;
public interface UserService {
/**
* 校验用户登录
* @param uname 用户名
* @param pwd 密码
* @return 返回查询到的用户信息
*/
User checkUserLoginService(String uname,String pwd);
/**
* 修改用户密码
* @param newPwd
* @param uid
* @return
*/
int userChangePwdService(String newPwd, int uid);
/**
* 获取所有的用户信息
* @return
*/
List<User> userShowService();
/**
* 用户注册
* @param u
* @return
*/
int userRegService(User u);
}
package com.shenzhou.keji.xinxi.service.impl;
import java.util.List;
import com.shenzhou.keji.xinxi.bean.User;
import com.shenzhou.keji.xinxi.dao.UserDao;
import com.shenzhou.keji.xinxi.dao.impl.UserDaoImpl;
import com.shenzhou.keji.xinxi.service.UserService;
public class UserServiceImpl implements UserService{
//声明Dao层对象
UserDao ud=new UserDaoImpl();
//用户登录
@Override
public User checkUserLoginService(String uname, String pwd) {
User u=ud.checkUserLoginDao(uname, pwd);
return u;
}
//修改用户密码
@Override
public int userChangePwdService(String newPwd, int uid) {
int index=ud.userChangePwdDao(newPwd,uid);
return index;
}
//获取所有的用户信息
@Override
public List<User> userShowService() {
List<User> lu=ud.userShowDao();
return lu;
}
//用户注册
@Override
public int userRegService(User u) {
return ud.userRegDao(u);
}
}
controller类
package com.shenzhou.keji.xinxi.controller;
import java.io.IOException;
import java.util.List;
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 com.shenzhou.keji.xinxi.bean.User;
import com.shenzhou.keji.xinxi.service.UserService;
import com.shenzhou.keji.xinxi.service.impl.UserServiceImpl;
@WebServlet("/user")
public class UserServlet extends HttpServlet {
//获取service层对象
UserService us=new UserServiceImpl();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//获取操做符
String oper=req.getParameter("oper");
if("login".equals(oper)){
//检测登录
checkUserLogin(req,resp);
}else if("pwd".equals(oper)){
//修改密码
userChangePwd(req,resp);
}else if("show".equals(oper)){
//显示所有用户
userShow(req,resp);
}else if("reg".equals(oper)){
//注册
userReg(req,resp);
}else{
}
}
//注册用户
private void userReg(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取请求信息
String uname=req.getParameter("uname");
String pwd=req.getParameter("pwd");
String sex=req.getParameter("sex");
int age=req.getParameter("age")!=""?Integer.parseInt(req.getParameter("age")):0;
String birth=req.getParameter("birth");
String[] bs=null;
if(birth!=""){
bs=birth.split("/");
birth=bs[0]+"-"+bs[1]+"-"+bs[2];
}
System.out.println(uname+":"+pwd+":"+sex+":"+age+":"+birth);
User u=new User(uname, pwd, sex, age, birth);
//处理请求信息
//调用业务层处理
int index=us.userRegService(u);
//响应处理结果
if(index>0){
//获取session
HttpSession hs=req.getSession();
hs.setAttribute("reg", "true");
//重定向
resp.sendRedirect("login.jsp");
}
}
//显示所有的用户信息
private void userShow(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//处理请求
//调用service
List<User> lu=us.userShowService();
//判断
if(lu!=null){
//将查询的用户数据存储到request对象
req.setAttribute("lu",lu);
//请求转发
req.getRequestDispatcher("/findAll.jsp").forward(req, resp);
return;
}
}
//用户修改密码
private void userChangePwd(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取数据
String newPwd=req.getParameter("newPwd");
//从session中获取用户信息
User u=(User)req.getSession().getAttribute("user");
int uid=u.getUid();
//处理请求
//调用service处理
int index=us.userChangePwdService(newPwd,uid);
if(index>0){
//获取session对象
HttpSession hs=req.getSession();
hs.setAttribute("pwd","true");
//重定向到登录页面
resp.sendRedirect("login.jsp");
}
}
//处理登录
private void checkUserLogin(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
//获取请求信息
String uname=req.getParameter("uname");
String pwd=req.getParameter("pwd");
//处理请求信息
//System.out.println(uname+pwd);
//校验
User u=us.checkUserLoginService(uname, pwd);
if(u!=null){
//获取session对象
HttpSession hs=req.getSession();
//将用户数据存储到session中
hs.setAttribute("user", u);
//重定向
resp.sendRedirect("index.jsp");
return;
}else{
//添加标识符到request中
req.setAttribute("flag",0);
//请求转发
req.getRequestDispatcher("login.jsp").forward(req, resp);
return;
}
}
}
前端JSP文件
1.登录界面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE >
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登录界面</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" src="js/jquery.js"></script>
<script src="js/cloud.js" type="text/javascript"></script>
</head>
<body >
<%
//声明java代码块进行错误提示语的逻辑校验
Object obj=request.getAttribute("flag");
if(obj!=null){
%>
<div style="text-align: center;">
<span style="font-size: 15px;color:darkred;font-weight: bold;">用户名或者密码错误</span>
</div>
<%} %>
<%
//声明java代码块进行密码修改提示语
Object pwd=session.getAttribute("pwd");
if(pwd!=null){
%>
<div style="text-align: center;">
<span style="font-size: 15px; color:darkred; font-weight: bold;">密码修改成功</span>
</div>
<%}
session.removeAttribute("pwd");
%>
<%
//声明java代码块进行注册提示语
Object reg=session.getAttribute("reg");
if(reg!=null){
%>
<div style="text-align: center;">
<span style="font-size: 15px;color:darkred;font-weight: bold;">注册成功</span>
</div>
<%}
session.removeAttribute("reg");
%>
<div>
<form action="user" method="post">
<input type="hidden" name="oper" value="login" />
<ul>
<li><input name="uname" type="text" placeholder="用户名" /></li>
<li><input name="pwd" type="password" placeholder="密码" /></li>
<li>
<input name="" type="submit" value="登录" />
<a href="reg.jsp"><input name="" type="button" value="注册" /></a>
</li>
</ul>
</form>
</div>
</body>
</html>
- 主界面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE>
<html>
<head>
<base href="<%=basePath%>">
<title>主界面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
恭喜您登录成功!! <br/>
<a href="reg.jsp"><input name="" type="button" value="注册新用户" /></a><br><br>
<a href="change.jsp"><input name="" type="button" value="修改密码" /></a><br><br>
<form action="user" method="post">
<input type="hidden" name="oper" value="show" />
<input name="" type="submit" value="查询所有用户" />
</form>
</body>
</html>
- 注册界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册界面</title>
</head>
<body>
<div>
<form action="user" method="post">
<input type="hidden" name="oper" value="reg" />
<ul>
<li><input name="uname" type="text" placeholder="用户名" /></li>
<li><input name="pwd" type="password" placeholder="密码" /></li>
<li><input name="sex" type="text" placeholder="性别" /></li>
<li><input name="age" type="text" placeholder="年龄" /></li>
<li><input name="birth" type="text" placeholder="生日" /></li>
<li><input name="" type="submit" class="loginbtn" value="注册" /></li>
</ul>
</form>
</div>
</body>
</html>
- 查询所有界面
<%@ page language="java" import="java.util.*,com.shenzhou.keji.xinxi.bean.*" pageEncoding="utf-8"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>所有人员信息</title>
</head>
<body>
所有用户信息:
<table border="1">
<thead>
<tr>
<th>用户编号</th>
<th>用户名</th>
<th>密码</th>
<th>性别</th>
<th>年龄</th>
<th>出生年月</th>
</tr>
</thead>
<tbody>
<%
List<User> lu=(ArrayList<User>)request.getAttribute("lu");
for(User u:lu){
%>
<tr>
<td><%=u.getUid() %></td>
<td><%=u.getUname() %></td>
<td><%=u.getPwd()%></td>
<%
if("男".equals(u.getSex())){
%>
<td>男</td>
<%}else{ %>
<td>女</td>
<%} %>
<td><%=u.getAge() %></td>
<td><%=u.getBirth() %></td>
</tr>
<%} %>
</tbody>
</table>
</body>
</html>
注意导mysql的jar包