第1天:Servlet+JSP+MVC+JDBC小项目:信息管理系统

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>
  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%>">
    <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>
  1. 注册界面
<%@ 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>
  1. 查询所有界面
<%@ 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包
在这里插入图片描述

发布了92 篇原创文章 · 获赞 49 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Xxacker/article/details/88411690