Servlet课程0426(八)Servlet分页技术

Welcome.java

//登录界面
package com.tsinghua;

import javax.servlet.http.*;
import java.io.*;
import  java.sql.*;

public class Welcome extends HttpServlet{
    public void doGet(HttpServletRequest req, HttpServletResponse res) { //业务逻辑 Connection ct = null; PreparedStatement ps = null; ResultSet rs = null; try{ //从Session中得到用户名 HttpSession hs = req.getSession(true); String myName = (String)hs.getAttribute("uname"); if(myName == null) { //返回登录界面 res.sendRedirect("login?info=error1"); return; } //解决中文乱码 res.setCharacterEncoding("gbk"); PrintWriter pw = res.getWriter(); pw.println("<html>"); pw.println("<body><center>"); //在Servlet中显示图片 pw.println("<img src='./imgs/1.GIF' /><br/>"); pw.println("wel,hello"); pw.println("你的用户名是,"+myName); pw.println("<br><a href=login>返回重新登录</a>"); //==========================分页的功能===================== int pageSize = 3;//一页显示几条记录 int pageNow = 1;//希望显示第几页 int rowCount = 0;//共有几条记录(查表) int pageCount = 0;//共有几页(计算出来的) //动态的接收pageNow String sPageNow = req.getParameter("pageNow"); //用户第一次进入welcome页面,此时spageNow为null,所以不需要去改动pageNow,因为pageNow此时的值默认为1 if(sPageNow != null) { pageNow = Integer.parseInt(sPageNow); } //得到rowCount //1加载驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //得到连接 ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb","sa","123456"); //创建一个Statement ps = ct.prepareStatement("select count(*) from users"); rs = ps.executeQuery(); if(rs.next()) { rowCount = rs.getInt(1); } //计算pageCount if(rowCount % pageSize == 0) { pageCount = rowCount/pageSize; } else { pageCount = rowCount/pageSize + 1; } /* ps = ct.prepareStatement("select top ? * from users where userId not in (select top ? userId from users)"); //给问号?赋值,preparedStatement会自动的将问号转换成相应的数据类型 //setInt方法第一个Int表示是第几个问号,第二个int表示给问号赋的具体的值 ps.setInt(1,pageSize); ps.setInt(2,pageSize*(pageNow-1)); */ ps = ct.prepareStatement("select top "+pageSize+" * from users where userId not in (select top "+(pageSize*(pageNow-1))+" userId from users)"); //执行查询 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>"); //显示超链接 if(pageNow > 1) { pw.println("<a href=wel?pageNow="+(pageNow-1)+">上一页</a>"); } for(int i = pageNow; i <= pageNow+4; i++) { pw.println("<a href=wel?pageNow="+i+">"+i+"</a>"); } if(pageNow < pageCount) { pw.println("<a href=wel?pageNow="+(pageNow+1)+">下一页</a>"); } pw.println("</center></body>"); pw.println("</html>"); } catch(Exception ex) { ex.printStackTrace(); } } //处理get请求 //req用于获得客户端(浏览器)的信息 //res用于向 客户端(浏览器)返回信息 public void doPost(HttpServletRequest req, HttpServletResponse res) { this.doGet(req,res); } }

 

 

LoginCl.java

//登录界面
package com.tsinghua;

import javax.servlet.http.*;
import java.io.*;
import java.sql.*;

public class LoginCl 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("userpwd"); //连接数据库,三部曲,加载驱动,建立连接 //1加载驱动包 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //得到连接 ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb","sa","123456"); //创建一个Statement sm = ct.createStatement(); //top 1 会提高查询的效率,否则数据库查询完所有再把结果告诉你  rs = sm.executeQuery("select top 1 passwd from users where userName='"+u+"'"); //executeQuery返回的是一个ResultSet执行查询select语句用Query //executeUpdate返回的是int,因此是执行增加删除和修改 if(rs.next()) { //这说明用户是存在的 String dbPasswd = rs.getString(1); if(dbPasswd.equals(p)) { //真的合法 //合法 //将验证成功的信息写入session //得到session,得到session那张表 HttpSession hs = req.getSession(true); //默认30分钟,为了展示效果下面修改销毁时间 //该方法是按照秒来算的 hs.setMaxInactiveInterval(30); //写入属性 hs.setAttribute("uname",u); //跳转到welcome res.sendRedirect("wel?uname="+u); } }else{ //说明用户名不存在 //不合法 //写你要到的Servlet的那个URL res.sendRedirect("login"); } } catch(Exception ex) { ex.printStackTrace(); }finally{ try{ if(rs != null) rs.close(); if(sm != null) sm.close(); if(ct != null) ct.close(); }catch(Exception ex){ ex.printStackTrace(); } } } //处理get请求 //req用于获得客户端(浏览器)的信息 //res用于向 客户端(浏览器)返回信息 public void doPost(HttpServletRequest req, HttpServletResponse res) { this.doGet(req,res); } }

Login.java

//登录界面
package com.tsinghua;

import javax.servlet.http.*;
import java.io.*;

public class Login extends HttpServlet{
    public void doGet(HttpServletRequest req, HttpServletResponse res)
    {
    
            //业务逻辑
        try{ //中文乱码 //浏览器默认ISO-8859 res.setContentType("text/html;charset=gbk"); PrintWriter pw = res.getWriter(); //返回登录界面 pw.println("<html>"); pw.println("<body>"); //得到error信息 String info = req.getParameter("info"); if(info != null) { pw.println("<h1>你的用户名或是密码错误!</h1>"); } pw.println("<h1>登录界面</h1>"); pw.println("<form action='loginCl' method=post>"); pw.println("用户名<input type='text' name='username'/><br/>"); pw.println("密码<input type='password' name='userpwd'/><br/>"); pw.println("<input type='submit' value='loing' /><br/>"); pw.println("</form>"); pw.println("</body>"); pw.println("</html>"); } catch(Exception ex) { ex.printStackTrace(); } } //处理get请求 //req用于获得客户端(浏览器)的信息 //res用于向 客户端(浏览器)返回信息 public void doPost(HttpServletRequest req, HttpServletResponse res) { this.doGet(req,res); } }

 迅速生成海量数据

insert into users (userName,passwd,email,grade) select userName,passwd,email,grade from users

 

转载于:https://www.cnblogs.com/beautiful-code/p/5435138.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值