增加了分页功能
Login.java
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
public class Login extends HttpServlet{
//处理get请求
//req : 用于获得客户端(浏览器)的信息
//res : 用于向客户端(浏览器)返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=gbk");
PrintWriter pw = res.getWriter();
String error = (String)req.getParameter("info");
pw.println("<html>");
pw.println("<body>");
pw.println("<head>登陆界面</head>");
if(error!=null){
pw.println("<h1>您输入的用户名或密码错误</h1>");
}
pw.println("<form action=loginCheck method =post>");
pw.println("用户:<input type=text name =username><br>");
pw.println("密码:<input type=password name =password><br>");
pw.println("<input type=submit value=login>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
}catch(Exception e){
e.printStackTrace();
}
}
}
LoginCheck.java
package com.tsinghua;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class LoginCheck extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
Connection ct = null;
Statement sm = null;
ResultSet rs = null;
try{
String u = req.getParameter("username");
String p = req.getParameter("password");
//连接数据库
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//得到链接 Connection对象
ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb1","sa","admin");
// 创建statement
sm = ct.createStatement();
//得到结果集
//rs = sm.executeQuery("select top 1 from users where username='"+u+ "' and passwd='" +p+"'");
/*//if(u.equals("sp")&&p.equals("123")){
//if(p.equals("123")){
if(rs.next()){
// 将验证成功的信息写入session
//1:得到session
HttpSession hs = req.getSession(true);
//修改session的存在时间
hs.setMaxInactiveInterval(20);
hs.setAttribute("pass","OK");
res.sendRedirect("welcome?uname="+u+"&upass="+p);
}*/
rs = sm.executeQuery("select top 1 passwd from users where username = '"+u+"'");
if(rs.next()){
//说明用户是存在的
String dbPasswd = rs.getString(1);
if(dbPasswd.equals(p)){
// 将验证成功的信息写入session
//1:得到session
HttpSession hs = req.getSession(true);
//修改session的存在时间
hs.setMaxInactiveInterval(20);
hs.setAttribute("pass","+p+");
hs.setAttribute("name","+u=");
//res.sendRedirect("welcome?uname="+u+"&upass="+p);
res.sendRedirect("welcome");
// 真的合法
}
else{
res.sendRedirect("login");// 里面的内容是写你要跳转servlet的url
}
}
else{
res.sendRedirect("login");// 里面的内容是写你要跳转servlet的url
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
}
if(sm!=null){
sm.close();
}
if(ct!=null){
ct.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
Welcome.java
//用户欢迎servlet
package com.tsinghua;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Welcome extends HttpServlet{
Connection ct = null;
PreparedStatement ps = null;
ResultSet rs = null;
public void doGet(HttpServletRequest req,HttpServletResponse res){
res.setContentType("text/html;charset=gbk");
try{
HttpSession hs = req.getSession(true);
String p = (String)hs.getAttribute("pass");
if(p == null){
res.sendRedirect("login?info=error");
}
//u=new String(u.getBytes("iso-8859-1"),"gb2312");
String u = (String)hs.getAttribute("name");
PrintWriter pw = res.getWriter();
pw.println("<img src=imgs/1.GIF><br>");
//连接数据库
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//得到链接 Connection对象
ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb1","sa","admin");
// 创建statement
ps = ct.prepareStatement("select count(*)from users");
rs = ps.executeQuery();
int pageSize = 3; //一页显示几条数据
int pageNow = 1; //希望显示第几页
int rowCount; // 一共有多少行(查询出来)
int pageCount; //共有几页(计算出来)
//动态的界首pageNow
String sPageNow = (String)req.getParameter("pageNow");
if(sPageNow!=null){
pageNow = Integer.parseInt(sPageNow);
}
if(rs.next()){
//首先得到rowCount
rowCount = rs.getInt(1);
if(rowCount/pageSize==0)
{
pageCount = rowCount/pageSize;
}
else
{
pageCount = rowCount/pageSize+1;
}//计算pageCount
ps = ct.prepareStatement("select top "+pageSize+" * from users where userId not in (select top "+pageSize*(pageNow-1)+" userId from users)");
}else{
pageCount = 0;
}
rs = ps.executeQuery();
pw.println("<table border = 1>");
pw.println("<tr><th>id</th><th>name</th><th>password</th><th>email</th><th>grade</th></tr>");
while(rs.next()){
pw.println("<tr>");
pw.println("<td>"+rs.getInt(1)+"</td>");
pw.println("<td>"+rs.getString(2)+"</td>");
pw.println("<td>"+rs.getString(3)+"</td>");
pw.println("<td>"+rs.getString(4)+"</td>");
pw.println("<td>"+rs.getInt(5)+"</td>");
pw.println("</tr>");
}
pw.println("</table>");
//显示超链接
for(int i=1;i<=pageCount;i++){
pw.println("<a href=welcome?pageNow="+i+">"+i+"</a>");
}
// pw.println("<br>Welcome!"+u+"! pass="+p);
pw.println("<br>Welcome!"+u+"!");
pw.println("<br><a href =login>返回重新登陆>");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}