和Servlet功能需求一样
数据库:
CREATE DATABASE user;
USE user;
CREATE TABLE `user` (
`userId` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(32) NOT NULL,
`password` varchar(64) NOT NULL,
`email` varchar(50) DEFAULT NULL,
`grade` char(2) DEFAULT NULL,
PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=836 DEFAULT CHARSET=utf8;
login.jsp:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
登录页面用户登录
用户名:
密 码:
loginCl.jsp:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'login.jsp' starting page// 接收参数
String userName = request.getParameter("userName");
String password = request.getParameter("password");
// 数据库连接参数
String DRIVERCLASS = "com.mysql.jdbc.Driver";
String URL = "jdbc:mysql://localhost:3306/servlet?useUnicode=true&characterEncoding=UTF-8";
String USRENAME = "root";
String PASSWORD = "123456";
// 连接数据库
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName(DRIVERCLASS);
conn = DriverManager.getConnection(URL, USRENAME, PASSWORD);
String sql = "SELECT userName, password FROM user WHERE userName = '" + userName + "' LIMIT 1";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
// 进行验证
boolean flag = false;
if (rs.next()) {// 用户存在
// 数据库中的用户名和密码
String userName_db = rs.getString("userName");
String password_db = rs.getString("password");
// 验证密码
if (password_db.equals(password)) {
HttpSession hs = request.getSession();
hs.setAttribute("userName", userName);
hs.setMaxInactiveInterval(14*24*60*60);
request.getRequestDispatcher("wel.jsp?userName_db="
+ userName_db).forward(request, response);
} else {
response.sendRedirect("login.jsp?loginErrorInfo=Error-Password");
}
} else {// 用户不存在
response.sendRedirect("login.jsp?loginErrorInfo=Error-UserName");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
rs.close();
rs = null;
}
if (ps != null) {
ps.close();
ps = null;
}
if (conn != null) {
conn.close();
conn = null;
}
}
%>
wel.jsp:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
登录成功// 获取文本框的值
var goObj = document.getElementById("go");
function checkGoTo() {
if (form1.dy_pageNow.value == "") {
alert("请输入要跳转的页数");
return false;
}
var pageCount = form1.pageCount.value;
if ((form1.dy_pageNow.value) > pageCount) {
alert("输入的页数过大, 最大页数: " + pageCount);
return false;
}
if (form1.dy_pageNow.value == 0) {
alert("输入页数应该大于0");
return false;
}
var regex = /^\d+$/;
if (!regex.test(form1.dy_pageNow.value)) {
alert("请输入数字");
form1.dy_pageNow.value.value= "";
return false;
}
}
String userName = (String) request.getSession().getAttribute("userName");
%>
登录成功, 欢迎:
// 定义4个分页变量
int pageSize = 3 ;// 一页多少条
int pageNow = 1 ;// 希望第几页
int rowCount = 0 ;// 多少条
int pageCount = 0 ;// 多少页
// 接收pageNow
String dy_pageNow = request.getParameter("dy_pageNow");
if (dy_pageNow != null) {
pageNow = Integer.parseInt(dy_pageNow);
}
// 数据库连接参数
String DRIVERCLASS = "com.mysql.jdbc.Driver";
String URL = "jdbc:mysql://localhost:3306/servlet?useUnicode=true&characterEncoding=UTF-8";
String USRENAME = "root";
String PASSWORD = "123456";
// 连接数据库
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String sql = null;
try {
Class.forName(DRIVERCLASS);
conn = DriverManager.getConnection(URL, USRENAME, PASSWORD);
// ==============================用户列表============================
sql = "SELECT * FROM user LIMIT "
+ (pageNow-1)*pageSize + ", " + pageSize;
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
%>
用户列表
userId | userName | password | grade |
---|
while (rs.next()) {
%>
}
%>
// ==============================分页============================
// 得到rowCount
ps = conn.prepareStatement("SELECT count(*) FROM user");
rs = ps.executeQuery();
if (rs.next()) {
rowCount = rs.getInt(1);
}
// 计算pageCount
if (rowCount % pageSize == 0) {
pageCount = rowCount / pageSize;
} else {
pageCount = rowCount / pageSize + 1;
}
// 分页超链接
%>
if (pageNow > 1) {
%>
}
// 声明一个参数pageMax, 用于只显示到pageCount
int pageMax = ((pageCount-pageNow) <= 5) ? pageCount : (pageNow+4);
for (int i=pageNow; i<=pageMax; i++) {
%>
}
if (pageNow < pageCount) {
%>
}
%>
跳转到
页
当前页: ,
共 页
} catch(Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
rs.close();
rs = null;
}
if (ps != null) {
ps.close();
ps = null;
}
if (conn != null) {
conn.close();
conn = null;
}
}
%>
测试: