day_6 在sevlet网页程序中显示图片、数据库表格,居中排版,分页算法以及上一页下一页

来源:互联网 发布:猜数游戏java编程界面 编辑:程序博客网 时间:2024/04/30 01:40

在之前编写的servlet文件下进行改进:

//登录界面的servletpackage test1;import java.io.*;import javax.servlet.http.*;public class Login extends HttpServlet{public void doPost(HttpServletRequest req,HttpServletResponse res){this.doGet(req,res);}public void doGet(HttpServletRequest req,HttpServletResponse res){//res:页面向控制台回应,页面发出信息。req:控制台向页面要求,控制台接收页面信息。try{res.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();pw.println("<html>");//html文件体pw.println("<body><center>");//body体,让html文字在网页中间显示pw.println("<hr />");//分割线pw.println("<h1>登陆界面<h1>");pw.println("<form action = logincl method=post>");//该段组件体和logincl体进行关联pw.println("用户名:<input type = text name = username><br />");//用户名组件体pw.println("密码:<input type = password name = passwd><br />");//密码组件体pw.println("<input type = submit value = '登录'><br />");pw.println("<hr />");pw.println("<form>");//得到error信息String info = (String)req.getParameter("info");if(info.equals("error1") ){pw.println("<h/>您的名或密码输入错误<h/>");}if(info.equals("error2") ){pw.println("<h/>您的cookie超时请重新登录<h/>");}pw.println("</center></body>");//body体,让html文字在网页中间显示pw.println("</html>");//html文件体}catch(Exception ex){ex.printStackTrace();}}}//登录控制文件的servletpackage test1;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class LoginCl extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse res){this.doPost(req,res);}public void doPost(HttpServletRequest req,HttpServletResponse res){Connection ct = null;ResultSet rs = null;Statement sm = null;try{//服务器接收login页面发来的用户名和密码,要用到req。String u = req.getParameter("username");//此处填写组件名String p = req.getParameter("passwd");//此处填写组件名//连接到数据库 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  //得到链接  ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=rvdb","sa","2887005");  //创建Statrment sm=ct.createStatement(); rs=sm.executeQuery("select top 1 passwd from users where username ='"+u+"'"); if(rs.next()){//说明用户是存在的String dbPasswd=rs.getString(1);if(dbPasswd.equals(p))//密码和数据库中的一致{HttpSession hs = req.getSession(true);//得到和req相关联的session,如果没有就创建sessionhs.setMaxInactiveInterval(20);//hs.setAttribute("pass","ok");hs.setAttribute("pass",u);//连接登录后的欢迎界面 //sendRedirect的作用是跳转界面 res.sendRedirect("wel?username="+u+"&passwd="+p);//该处填写域名}elseres.sendRedirect("login?info=error1");}else{//说明连用户名都没有输对,跳转res.sendRedirect("login?info=error1");}}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();}}}}//登入后界面package test1;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class Wel extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse res){this.doPost(req,res);}public void doPost(HttpServletRequest req,HttpServletResponse res){//打开操作数据库必要的变量Connection ct = null;ResultSet rs = null;PreparedStatement ps = null;Statement sm = null;try{//得到sessionres.setContentType("text/html;charset=gbk");//中文防止乱码PrintWriter pw = res.getWriter();HttpSession hs = req.getSession(true);String valu = (String)hs.getAttribute("pass");//得到键值取对值(用户名)String u = req.getParameter("username");String p = req.getParameter("passwd");if(valu == null){res.sendRedirect("login?info=error2");return ;}else{//在sevlet中显示图片pw.println("<body><center>");//body体,让html文字在网页中间显示pw.println("<img src=imgs/welcome.gif><br />");//在tomcat/webapps/自己的网页文件夹 创立imgs文件夹,放入图片然后在html语句中插入图片路径即可pw.println("<h1>欢迎光临!用户"+valu+"</h1><br />");//pw.println("<p>您的密码是"+p+"</p><br />");pw.println("<a href='http://localhost:8080/RevenWebsite/login'>返回重新登录</a><br />");pw.println("<a href='http://www.baidu.com'>不懂?百度一下!</a><br />");//==================分页功能==============//int pageSize = 3; //一页显示3条记录int pageNow = 1;//当前显示页数int rowCount = 0;//一共有几条记录(查表)int pageCount = 0;//一共有几页int pageSize2 = 5;//动态地接受pageNowString sPageNow = req.getParameter("pageNow");if(sPageNow != null){pageNow = Integer.parseInt(sPageNow);}//得到rowCount//操作数据库//连接到数据库 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  //得到链接  ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=rvdb","sa","2887005");  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 "+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>账户名</th><th>密码</th><th>邮箱</th><th>权限等级</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-pageSize2)+">上一页</a>");for(int i = pageNow;i <= pageNow+pageSize2-1;i++){pw.println("<a href=wel?pageNow="+i+">"+i+"</a>");}//显示下一页if(pageNow!=pageCount)pw.println("<a href=wel?pageNow="+(pageNow+pageSize2)+">下一页</a>");}pw.println("</center></body>");//body体,让html文字在网页中间显示}catch(Exception ex){ex.printStackTrace();}}}

成果图如下:


注:在数据库中自我复制自身表格的语句为insert into 表命(列名1,列名2,列名3,列名4...) select 列名1,列名2,列名3,列名4 from 表名

0 0
原创粉丝点击