(一)美化管理系统界面
(二)管理系统功能改进(增删改查)
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'login.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body style="background-image:url(imgs/image1.jpg)"><center>
<%
String err=(String)request.getParameter("err");
if(err!=null){
if(err.equals("1")){
out.println("<font color=red size=5>非法登录!</font><br>");
}
}
%>
<font size=7 color=white>用户登录</font><hr>
<form action="LoginClServlet" method="post">
用户名<input type="text" name="username"><br>
密 码<input type="password" name="passwd"><br>
<input type="submit" value="登录">
</form>
</center>
</body>
</html>
loginCl.jsp
<%@ page language="java" import="java.util.*,java.sql.*,com.tingwei.model.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'loginCl.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
//接收用户名和密码,完成对用户的验证
String u=request.getParameter("username");
String p=request.getParameter("passwd");
//调用UserBeanCl方法验证用户是否合法
UserBeanCl ubc=new UserBeanCl();
if(ubc.checkUser(u,p)){
response.sendRedirect("wel.jsp");
}else{
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
main.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'main.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body><center>
<h1>请选择操作</h1>
<a href="UserClServlet?pageNow=1&flag=fenye">管理用户</a><br>
<a href="addUser.jsp">添加用户</a><br>
<a href="#">查找用户</a><br>
<a href="UserClServlet?pageNow=1&flag=delUser">注销用户</a><br>
<a href="login.jsp">返回重新登录</a>
</center>
</body>
</html>
wel.jsp
<%@ page language="java" import="java.util.*,java.sql.*,com.tingwei.model.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'wel.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function sure(){
return window.confirm("确定删除?");
}
</script>
</head>
<body><center>
<%//防止用户非法登录
String u=(String)session.getAttribute("myName");
if(u==null){
response.sendRedirect("login.jsp?err=1");
return;
}
%>
登录成功!<%=u%><br>
<a href="login.jsp">返回重新登录</a> <a href="main.jsp">主界面</a>
<hr>
<h1>用户信息列表</h1>
<%
//调用UserBeanCl方法,完成分页显示
//UserBeanCl ubc=new UserBeanCl();
//ArrayList al=ubc.getUsersByPage(pageNow);
//要显示的用户信息从request中取
ArrayList al=(ArrayList)request.getAttribute("result");
%>
<table border="1">
<tr bgcolor="yellow"><td>用户id</td><td>用户名</td><td>密码</td><td>电邮</td><td>级别</td>
<td>修改用户</td><td>删除用户</td></tr>
<%
//定义一个颜色数组
String []color={"pink","white"};
for(int i=0;i<al.size();i++){
//从al中取出userBean
UserBean ub=(UserBean)al.get(i);
%>
<tr bgcolor="<%=color[i%2]%>"><td><%=ub.getUserId()%></td><td><%=ub.getUsername()%></td>
<td><%=ub.getPasswd()%></td><td><%=ub.getEmail()%></td><td><%=ub.getGrade()%></td>
<td><a href="updateUser.jsp?flag=updateUser&userName=<%=ub.getUsername() %>&passwd=<%=ub.getPasswd() %>&email=<%=ub.getEmail() %>&grade=<%=ub.getGrade()%>&userId=<%=ub.getUserId() %>">修改用户</a></td><td>
<a onclick="return sure();" href="UserClServlet?flag=delUser&userId=<%=ub.getUserId() %>">删除用户</a></td>
</tr>
<%
}
%>
</table>
<%
//从request中得到pageNow
int pageNow=Integer.parseInt((String)request.getAttribute("pageNow"));
//上一页
if(pageNow!=1)
out.println("<a href=UserClServlet?flag=fenye&pageNow="+(pageNow-6)+">上一页</a>");
//得到pageCount
String s_pageCount=(String)request.getAttribute("pageCount");
int pageCount=Integer.parseInt(s_pageCount);
//显示超链接
for(int i=pageNow;i<=pageNow+5;i++){
out.println("<a href=UserClServlet?flag=fenye&pageNow="+i+">["+i+"]</a>");
}
//下一页
if(pageNow!=pageCount)
out.println("<a href=UserClServlet?flag=fenye&pageNow="+(pageNow+6)+">下一页</a>");
%>
</center>
</body>
</html>
addUser.jsp`
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'addUser.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body><center>
<h1>请输入用户信息</h1>
<form action="UserClServlet?flag=addUser" method="post">
<table border=1>
<tr><td>用户名</td><td><input type="text" name="userName"/></td></tr>
<tr><td>密 码</td><td><input type="text" name="passwd"/></td></tr>
<tr><td>电子邮件</td><td><input type="text" name="email"/></td></tr>
<tr><td>用户级别</td><td><input type="text" name="grade"/></td></tr>
</table>
<input type="submit" value="添加用户"/> <input type="reset" value="重置"/>
</form>
</center>
</body>
</html>
updateUser.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'updateUser.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body><center>
<h1>请输入用户信息</h1>
<form action="UserClServlet?flag=updateUser" method="post">
<table border=1>
<tr><td>用户id</td><td><input readonly type="text" name="userId" value="<%=request.getParameter("userId") %>"/></td></tr>
<tr><td>用户名</td><td><input type="text" name="userName" value="<%=request.getParameter("userName") %>"/></td></tr>
<tr><td>密 码</td><td><input type="text" name="passwd" value="<%=request.getParameter("passwd") %>"/></td></tr>
<tr><td>电子邮件</td><td><input type="text" name="email" value="<%=request.getParameter("email") %>"/></td></tr>
<tr><td>用户级别</td><td><input type="text" name="grade" value="<%=request.getParameter("grade") %>"/></td></tr>
</table>
<input type="submit" value="修改用户"/> <input type="reset" value="重置"/>
</form>
</center>
</body>
</html>
err.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'err.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body><center>
<h1>操作失败</h1>
<a href="main.jsp">返回主界面</a>
</center>
</body>
</html>
suc.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'suc.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body><center>
<h1>操作成功</h1>
<a href="main.jsp">返回主界面</a>
</center>
</body>
</html>
ConnDB.java
//得到数据库连接
package com.tingwei.model;
import java.sql.*;
public class ConnDB {
private Connection ct=null;
public Connection getConn(){
try {
String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb";
String user="sa";
String pass="tingwei";
String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
//1.加载驱动
Class.forName(driver);
//2.得到连接
ct=DriverManager.getConnection(url,user,pass);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return ct;
}
}
UserBean.java
//javabean,映射users表,一个对象对应一个user记录
package com.tingwei.model;
public class UserBean {
private int userId;
private String username;
private String passwd;
private String email;
private int grade;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
UserBeanCl.java
//这是一个处理类,也称BO(business object),主要是封装对users表的各种操作
//无非是增删改查
package com.tingwei.model;
import java.sql.*;
import java.util.*;
public class UserBeanCl {
private Statement sm=null; //PrepareStatement差不多,更快点
private Connection ct=null;
private ResultSet rs=null;
private int pageSize=6;
private int rowCount=0;
private int pageCount=0;
//验证用户是否合法
public boolean checkUser(String u,String p){
boolean b=false;
try {
//到数据库去验证
ct=new ConnDB().getConn();
sm=ct.createStatement();
rs=sm.executeQuery("select passwd from users where username='"+u+"'");
if(rs.next()){
if(rs.getString(1).equals(p)){
b=true;
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
this.close();
}
return b;
}
//分页
public ArrayList getUsersByPage(int pageNow){
ArrayList al=new ArrayList();
try {
ct=new ConnDB().getConn();
//创建Statement
sm=ct.createStatement();
//查询出,需要显示的记录
rs=sm.executeQuery("select top "+pageSize+" * from users where userId not in(select top "
+pageSize*(pageNow-1)+" userId from users)");
//将rs封装到ArrayList中
while(rs.next()){
UserBean ub=new UserBean();
ub.setUserId(rs.getInt(1));
ub.setUsername(rs.getString(2));
ub.setPasswd(rs.getString(3));
ub.setEmail(rs.getString(4));
ub.setGrade(rs.getInt(5));
al.add(ub);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
this.close();
}
return al;
}
public void close(){
try {
if(rs!=null)rs.close();
if(sm!=null)sm.close();
if(ct!=null)ct.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
//返回分页总页数
public int getPageCount(){
try {
//得到连接
ct=new ConnDB().getConn();
sm=ct.createStatement();
//查询表中记录总数
rs=sm.executeQuery("select count(*) from users");
if(rs.next()){
rowCount=rs.getInt(1);
}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
this.close();
}
return pageCount;
}
//删除用户
public boolean delUserById(String id){
boolean b=false;
try {
//得到连接
ct=new ConnDB().getConn();
sm=ct.createStatement();
// 执行
int a= sm.executeUpdate("delete from users where userId='"+id+"'");
if(a==1){
b=true;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
this.close();
}
return b;
}
// 添加用户
/**
* @author Administrator
* @param name:用户名
* @param passwd:密码
* @return boolean,true表示添加成功
*/
public boolean addUser(String name,String passwd,String email,String grade){
boolean b=false;
try {
//得到连接
ct=new ConnDB().getConn();
sm=ct.createStatement();
// 执行
int a=sm.executeUpdate("insert into users values('"+name+"','"+passwd+"','"+email+"','"+grade+"')");
if(a==1){
b=true;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
this.close();
}
return b;
}
// 修改用户
/**
* @author Administrator
* @param name:用户名
* @param passwd:密码
* @return boolean,true表示修改成功
*/
public boolean updateUser(String id,String name,String passwd,String email,String grade){
boolean b=false;
try {
//得到连接
ct=new ConnDB().getConn();
sm=ct.createStatement();
// 执行
name=new String(name.getBytes("iso-8859-1"),"gb2312");
String sql="update users set username='"+name+"',passwd='"+passwd+"',email='"+email+"',grade='"+grade+"' where userId='"+id+"'";
int a=sm.executeUpdate(sql);
if(a==1){
b=true;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
this.close();
}
return b;
}
}
UserClServlet.java
//此控制器用于处理用户的分页显示,增删改查的调用
package com.tingwei.controller;
import java.io.IOException;
import java.io.PrintWriter;
import com.tingwei.model.*;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserClServlet extends HttpServlet {
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获得用户id
String userId=request.getParameter("userId");
//获得标识值
String flag=request.getParameter("flag");
//若要求分页则
if(flag.equals("fenye")){
//得到用户期望显示的pageNow
String s_pageNow=request.getParameter("pageNow");
try {
System.out.println("UserClServlet中的分页方法");
int pageNow=Integer.parseInt(s_pageNow);
//调用userbeanCl中的分页方法
UserBeanCl ubc=new UserBeanCl();
ArrayList al=ubc.getUsersByPage(pageNow);
int pageCount=ubc.getPageCount();
request.setAttribute("result", al);
request.setAttribute("pageCount", pageCount+"");
request.setAttribute("pageNow", pageNow+"");
//重新跳转回wel.jsp
request.getRequestDispatcher("wel.jsp").forward(request,response);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}else if(flag.equals("delUser")){
UserBeanCl ubc=new UserBeanCl();
if(ubc.delUserById(userId)){
//删除成功
request.getRequestDispatcher("suc.jsp").forward(request, response);
}else{
request.getRequestDispatcher("err.jsp").forward(request, response);
}
}else if(flag.equals("addUser")){
String name=request.getParameter("userName");
String passwd=request.getParameter("passwd");
String email=request.getParameter("email");
String grade=request.getParameter("grade");
UserBeanCl ubc=new UserBeanCl();
if(ubc.addUser(name,passwd,email,grade)){
//添加成功
request.getRequestDispatcher("suc.jsp").forward(request, response);
}else{
request.getRequestDispatcher("err.jsp").forward(request, response);
}
}else if(flag.equals("updateUser")){
String name=request.getParameter("userName");
String passwd=request.getParameter("passwd");
String email=request.getParameter("email");
String grade=request.getParameter("grade");
UserBeanCl ubc=new UserBeanCl();
if(ubc.updateUser(userId, name, passwd, email,grade)){
//修改成功
request.getRequestDispatcher("suc.jsp").forward(request, response);
}else{
request.getRequestDispatcher("err.jsp").forward(request, response);
}
}
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException{
this.doGet(req, res);
}
}
LoginClServlet
//控制器,用于完成对用户身份的验证
//控制器本身不完成业务逻辑,而是负责去调用模型
package com.tingwei.controller;
import com.tingwei.model.*;
import javax.servlet.http.*;
import javax.servlet.ServletException;
import java.io.IOException;
import java.util.ArrayList;
public class LoginClServlet extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException{
// 得到用户名和密码
String u=req.getParameter("username");
u=new String(u.getBytes("iso-8859-1"),"gb2312");
String p=req.getParameter("passwd");
// 使用模型完成对用户的验证
UserBeanCl ubc=new UserBeanCl();
try {
if(ubc.checkUser(u, p)){
//res.sendRedirect("wel.jsp");
//因为sendRedirect()不高,常常使用转发方式
//准备要显示的数据
ArrayList al=ubc.getUsersByPage(1);
int pageCount=ubc.getPageCount();
req.setAttribute("result", al);
req.setAttribute("pageCount", pageCount+"");
req.setAttribute("pageNow","1");
//将用户名放入session以备后用
req.getSession().setAttribute("myName", u);
//req.getSession().removeAttribute("myName");
req.getRequestDispatcher("main.jsp").forward(req, res);
//这种方法效率高,同时req中的对象还可以在下一页面使用
}else{
//res.sendRedirect("login.jsp");
req.getRequestDispatcher("login.jsp").forward(req, res);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException{
this.doGet(req, res);
}
}
运行结果