界面view(jsp):处理前台界面
模型model (java) :处理后台业务
login.jsp (登录界面) ---> 提交到 loginCl.jsp 处理---->调用UserCl.java 来判断用户是否合法 ---->如果合法,跳转到login_success.jsp---->
---->login_success.jsp 页面显示用户列表(调用UserCl.java 来获取页面数和要显示的用户信息)------>如果用户不合法------->跳转到login_failure.jsp页面
1.login.jsp
</head>
<body>
<center><h1>登陆界面</h1>
<hr>
<form action="/jsp1/loginCl.jsp" method="post">
用户名:
<input type="text" name="id" />
<br>
密 码:
<input type="password" name="passw" />
<br>
<input type="submit" value="提交" />
<input type="reset" value="重置" />
<hr>
</form>
</center>
</body>
</html>
2.loginCl.jsp
</head>
<body>
<%
String id = request.getParameter("id");
String passw = request.getParameter("passw");
UserCl userCl = new UserCl();
if (userCl.checkUser(id,passw)) {
response.sendRedirect("login_success.jsp?user=" + id);
} else {
response.sendRedirect("login_failure.jsp?errNo=1");
}
%>
</body>
</html>
3.login_success.jsp
</head>
<body>
<center>
<h1>
登陆成功
</h1>
<h2>
欢迎
<font color="red"><%=request.getParameter("user")%></font>光临
</h2>
<a href="/jsp1/index1.jsp">返回重新登录</a>
<hr>
<%
//定义四个变量
int pageSize = 3; // 页面大小
int pageNow = 1;//默认显示第一页
int rowCount = 0;//总记录数,从数据库中查询
int pageCount = 0; //页数,(rowCount/pageSize)+1
//接受用户想要显示的页面
String s_pageNow = request.getParameter("pageNow");
if(s_pageNow!=null){
pageNow = Integer.parseInt(s_pageNow);
}
//调用方法获取要显示的数据和页数
UserCl userCl = new UserCl();
pageCount = userCl.getPageCount();
ArrayList<User> al = userCl.getUserByPage(pageNow);
//用表格显示
%>
<center>
<table border="1">
<tr><td>userId</td><td>ID</td><td>PASSWORD</td><td>AGE</td><td>SEX</td></tr>
<%
for(int i=0;i<al.size();i++){
User user = (User)al.get(i);
%>
<tr><td><%=user.getUserId() %></td><td><%=user.getId() %></td>
<td><%=user.getPassword() %></td>
<td><%=user.getAge() %></td><td><%=user.getSex() %></td></tr>
<%
}
%>
</table>
</center>
<%
//显示超链接
if(pageNow != 1){
out.print("<a href=login_success.jsp?pageNow="+(pageNow-1)+" >上一页</a>");
}
if(pageNow > 6 && pageNow <= (pageCount-4)){
for(int i=pageNow-5;i<=pageNow+4;i++){
out.println("<a href=login_success.jsp?pageNow="+i+">["+i+"]</a>");
}
}else if(pageNow >(pageCount-4) ){
for(int i=pageCount-9;i<=pageCount;i++){
out.println("<a href=login_success.jsp?pageNow="+i+">["+i+"]</a>");
}
}else{
for(int i=1;i<=10;i++){
//要是pageCount > 10 则不显示全部,只显示前10页的超链接
//for(int i=1;i<=pageCount;i++)
out.println("<a href=login_success.jsp?pageNow="+i+">["+i+"]</a>");
}
}
if(pageNow != pageCount){
out.print("<a href=login_success.jsp?pageNow="+(pageNow+1)+">下一页</a>");
}
%>
</center>
</body>
</html>
4. UserCl.java
package com.dtg.model;
import java.sql.*;
import java.util.ArrayList;
public class UserCl {
Connection conn = null;
Statement sm = null;
ResultSet rs = null;
boolean flag = false;
int pageSize = 3; // 页面大小
int pageNow = 1;//默认显示第一页
int rowCount = 0;//总记录数,从数据库中查询
int pageCount = 0; //页数,(rowCount/pageSize)+1
//关闭连接
public void closeConn() throws SQLException{
try {
if(rs != null){
rs.close();
rs = null;
}
if(sm!=null){
sm.close();
sm = null;
}
if(conn!=null){
conn.close();
conn = null;
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
public boolean checkUser(String id, String passw){
try {
ConnDB conndb =new ConnDB();
conn = conndb.getConn();
sm = conn.createStatement();
rs = sm
.executeQuery("select password from user2 where id ='" + id
+ "'");
if (rs.next()) {
//确保用户名id是存在的
if (rs.getString(1).equals(passw)) {
//密码正确,用户合法
flag = true;
} else {
//密码不正确,用户不合法
flag = false;
}
} else {
//用户不存在
flag = false;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
this.closeConn();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return flag;
}
/**
* 得到分页的页数
* @return
*/
public int getPageCount(){
try {
conn = new ConnDB().getConn();
sm = conn.createStatement();
rs = sm.executeQuery("select count(*) from user2");
if (rs.next()) {
rowCount = rs.getInt(1);
}
// 计算pageCount
if (rowCount % pageSize == 0) {
pageCount = rowCount / pageSize;
} else {
pageCount = rowCount / pageSize + 1;
}
} catch (Exception e) {
// TODO: handle exception
}finally{
try {
this.closeConn();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return pageCount;
}
/**
* 取要分页显示的数据
*/
public ArrayList<User> getUserByPage(int pageNow){
ArrayList<User> al = new ArrayList<User>();
try {
conn = new ConnDB().getConn();
sm = conn.createStatement();
rs = sm.executeQuery("select top "+ pageSize+ " * from user2 where userId not in (select top "+ pageSize*(pageNow-1)+" userId from user2 order by userId) order by userId");
while(rs.next()){
User user = new User();
user.setUserId(rs.getInt(1));
user.setId(rs.getString(2));
user.setPassword(rs.getString(3));
user.setAge(rs.getInt(4));
user.setSex(rs.getString(5));
//添加user到动态数组中
al.add(user);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
this.closeConn();
} catch (Exception e2) {
e2.printStackTrace();
// TODO: handle exception
}
}
return al;
}
}
5.ConnDB.java
package com.dtg.model;
import java.sql.*;
public class ConnDB {
Connection conn = null;
public Connection getConn(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(
"jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Demo", "sa",
"Founder123");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return conn;
}
}