zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    远程连接Ubuntu中的MySQL
    以API 配置的方式来配置你的 Dubbo 应用
    jdk1.8:stream流式分组groupby
    springboot如何通过apollo动态去注册dubbo服务
    JDK动态代理[3]WeakCache缓存的实现机制
    Linq 交集、并集等集合理论学习
    Build my first Blazor app
    关于
    MySql数据库优化维度
    面霸篇:Java 集合容器大满贯(卷二)
  • 原文地址:https://www.cnblogs.com/beautiful-code/p/5435138.html
Copyright © 2011-2022 走看看