用户登录网站

news/2024/5/17 12:59:17/文章来源:https://blog.csdn.net/qq_35124535/article/details/60955399

用户登录网站(servlet 1.2)


 

一、视图层

Login.Java(登录界面)

LoginCl.java(验证用户)

Wel.java(欢迎界面)

 

二、模型层

ConnDB.java(数据库连接)

UserBean.java(表示users表)

UserBeanCl.java(业务逻辑控制)

 

三、注意:

1.部署web.xml

2.添加MySQL数据库

[java]  view plain copy
  1. create database spdb;  
  2. use spdb;  
  3.   
  4. create table users(  
  5. userId int auto_increment primary key not null,        
  6. username varchar(20),                               
  7. passwd varchar(30),                                   
  8. email varchar(30),                                      
  9. grade int                                                     
  10. );  

 

四、参考代码如下:

视图层

Login.java(登录界面)

[java]  view plain copy
  1. package com.tsinghua;  
  2.   
  3. import javax.servlet.*;  
  4. import javax.servlet.http.*;  
  5. import java.io.*;  
  6.   
  7. public class Login extends HttpServlet {  
  8.     public Login(){  
  9.         super();  
  10.     }  
  11.       
  12.     public void init() throws ServletException{}  
  13.     public void process(HttpServletRequest req,HttpServletResponse res)  
  14.         throws ServletException,IOException{  
  15.         try{              
  16.            //中文乱码解决  
  17.            res.setContentType("text/html;charset=UTF-8");  
  18.             //业务逻辑  
  19.             PrintWriter pw=res.getWriter();  
  20.             //返回登录界面  
  21.             pw.println("<html>");  
  22.             pw.println("<body>");  
  23.             //得到erro信息  
  24.             String info=(String)req.getParameter("info");  
  25.             if(info!=null){  
  26.                 pw.println("<h1>你的用户名或是密码错误!</h1><br>");  
  27.             }  
  28.             pw.println("<h1>登录界面</h1>");  
  29.             pw.println("<form action=logincl method=post>");  
  30.             pw.println("用户名:<input type=text name=username><br>");  
  31.             pw.println("密码:<input type=password name=passwd><br>");  
  32.             pw.println("<input type=checkbox name=keep value=2>两周内不用重新登录<br>");  
  33.             pw.println("<input type=submit value=loging><br>");  
  34.             pw.println("</form>");  
  35.             pw.println("</body>");  
  36.             pw.println("</html>");  
  37.         }catch(Exception ex){  
  38.             ex.printStackTrace();  
  39.         }  
  40.     }  
  41.     public void doGet(HttpServletRequest req,HttpServletResponse res)  
  42.         throws ServletException,IOException{  
  43.         process(req,res);  
  44.     }  
  45.     public void doPost(HttpServletRequest req,HttpServletResponse res)  
  46.         throws ServletException,IOException{  
  47.         process(req,res);  
  48.     }  
  49.     public void destroy(){  
  50.         super.destroy();  
  51.     }  
  52. }  

LoginCl.java(验证用户)

[java]  view plain copy
  1. package com.tsinghua;  
  2.   
  3. import javax.servlet.*;  
  4. import javax.servlet.http.*;  
  5. import java.io.*;  
  6. import java.sql.*;  
  7.   
  8. public class LoginCl extends HttpServlet {  
  9.     public LoginCl() {  
  10.         super();  
  11.     }  
  12.   
  13.     public void init() throws ServletException {  
  14.     }  
  15.   
  16.     // req:用于获得浏览器的信息  
  17.     // res:用于向浏览器返回信息(我就是服务器)  
  18.     public void process(HttpServletRequest req, HttpServletResponse res)  
  19.             throws ServletException, IOException {  
  20.         res.setContentType("text/html;charset=UTF-8");// 处理中文乱码  
  21.   
  22.         try {  
  23.             // 接收用户名和密码  
  24.             String u = req.getParameter("username");  
  25.             String p = req.getParameter("passwd");  
  26.             System.out.println("创建一个对象");  
  27.   
  28.             //调用UserBeanCl,1.创建一个对象  
  29.             UserBeanCl ubc=new UserBeanCl();  
  30.   
  31.             //2.使用UserBeanCl的方法  
  32.             if (ubc.checkUser(u, p)) {  
  33.                     // 合法用户  
  34.                     String keep = req.getParameter("keep");  
  35.                     if (keep != null) {  
  36.                         // 将用户名和密码保存在客户端(cookie)  
  37.                         // 创建  
  38.                         Cookie name = new Cookie("myname", u);  
  39.                         Cookie pass = new Cookie("mypasswd", p);  
  40.                         // 设置时间  
  41.                         name.setMaxAge(14 * 24 * 3600);  
  42.                         name.setMaxAge(14 * 24 * 3600);  
  43.                         // 回写到客户端  
  44.                         res.addCookie(name);  
  45.                         res.addCookie(pass);  
  46.                     }  
  47.                       
  48.                     // 将用户信息存入session中  
  49.                     HttpSession hs = req.getSession(true);  
  50.                     hs.setMaxInactiveInterval(30);  
  51.                     hs.setAttribute("name", u);  
  52.                     res.sendRedirect("welcome");// 跳转  
  53.                 } else {  
  54.                     //不合法用户  
  55.                     System.out.println("用户或密码错了");  
  56.                     res.sendRedirect("login");  
  57.                 }  
  58.         } catch (Exception ex) {  
  59.             ex.printStackTrace();  
  60.         }   
  61.     }  
  62.   
  63.     public void doGet(HttpServletRequest req, HttpServletResponse res)  
  64.             throws ServletException, IOException {  
  65.         process(req, res);  
  66.     }  
  67.   
  68.     public void doPost(HttpServletRequest req, HttpServletResponse res)  
  69.             throws ServletException, IOException {  
  70.         process(req, res);  
  71.     }  
  72.   
  73.     public void destroy() {  
  74.     }  
  75.   
  76. }  

Wel.java(欢迎界面)

 

[c-sharp]  view plain copy
  1. package com.tsinghua;  
  2.   
  3. import java.io.*;  
  4. import java.sql.*;  
  5. import java.util.*;  
  6.   
  7. import javax.servlet.*;  
  8. import javax.servlet.http.*;  
  9.   
  10. public class Wel extends HttpServlet {  
  11.     public Wel() {  
  12.         super();  
  13.     }  
  14.   
  15.     public void init() throws ServletException {  
  16.     }  
  17.   
  18.     public void process(HttpServletRequest req, HttpServletResponse res)  
  19.             throws ServletException, IOException {  
  20.         res.setContentType("text/html;charset=UTF-8");  
  21.         PrintWriter pw = res.getWriter();  
  22.         try {  
  23.             // 从session中得到用户名  
  24.             HttpSession hs = req.getSession(true);  
  25.             String myName = (String) hs.getAttribute("name");  
  26.             String name="";  
  27.             String passwd="";  
  28.   
  29.             if (myName == null) {  
  30.                 // 如果session中没有用户信息,再看看有没有cookie信息  
  31.                 // 从客户端得到所有的cookie信息  
  32.                 Cookie[] allCookies = req.getCookies();  
  33.                 int i = 0;  
  34.                 // 如果allCookies不为空  
  35.                 if (allCookies != null) {  
  36.                     for (i = 0; i < allCookies.length; i++) {// 从中取出cookie  
  37.                         // 依次取出  
  38.                         Cookie temp = allCookies[i];  
  39.                         if (temp.getName().equals("myname")) {  
  40.                             // 得到cookie的值  
  41.                             name = temp.getValue();  
  42.                         } else if (temp.getName().equals("mypasswd")) {  
  43.                             passwd = temp.getValue();  
  44.                         }  
  45.                     }  
  46.                     if(!name.equals("")&&!passwd.equals("")){  
  47.                         //到LoginCl.java去验证  
  48.                         res.sendRedirect("logincl?username="+name+"&passwd="+passwd);  
  49.                         return;  
  50.                     }  
  51.                 }  
  52.                 // 返回登陆界面  
  53.                 res.sendRedirect("login?info=error1");  
  54.                 return;  
  55.             }  
  56.             // 调整格式  
  57.             pw.println("<body><center>");  
  58.             // 在servlet中显示图片  
  59.             pw.println("<img src="images/lola.gif" mce_src="images/lola.gif"><br>");  
  60.             pw.println("Welcom,hello<br>");  
  61.             pw.println("你的用户名是:" + myName);  
  62.             // 做个超链接  
  63.             pw.println("<br><a href="login" mce_href="login">返回重新登录</a>");  
  64.   
  65.             // ================分页功能===============  
  66.             int pageSize = 3;// 一页显示几条记录(规定)  
  67.             int pageNow = 1;// 希望显示第几页(规定)  
  68.   
  69.   
  70.             // 动态的接收pageNow  
  71.             String sPageNow = req.getParameter("pageNow");  
  72.             if (sPageNow != null) {  
  73.                 pageNow = Integer.parseInt(sPageNow);// 转换成整数  
  74.             }  
  75.   
  76.             //调用userBeanCl  
  77.             UserBeanCl ubc=new UserBeanCl();  
  78.             ArrayList al=ubc.getResultByPage(pageNow, pageSize);  
  79.             // 表头  
  80.             pw.println("<table border=1>");  
  81.             pw.println("<tr><th>id</th><th>name</th><th>passwd</th><th>email</th><th>grade</th></tr>");  
  82.             for(int i=0;i<al.size();i++){  
  83.                 UserBean ub=(UserBean)al.get(i);  
  84.                 pw.println("<tr>");  
  85.                 pw.println("<td>" + ub.getUserId() + "</td>");  
  86.                 pw.println("<td>" + ub.getUsername() + "</td>");  
  87.                 pw.println("<td>" + ub.getPasswd() + "</td>");  
  88.                 pw.println("<td>" + ub.getEmail() + "</td>");  
  89.                 pw.println("<td>" + ub.getGrade() + "</td>");  
  90.                 pw.println("</tr>");  
  91.             }  
  92.             pw.println("</table>");  
  93.             // ================分页功能===============  
  94.   
  95.             // 上一页  
  96.             if (pageNow != 1) {  
  97.                 pw.println("<a href="welcome?pageNow=" mce_href="welcome?pageNow="" + (pageNow - 1)  
  98.                         + ">上一页</a>");  
  99.             }  
  100.             // 显示超链接  
  101.             // for (int i = 1; i <= pageCount; i++) {  
  102.             for (int i = pageNow; i <= pageNow + 4; i++) {  
  103.                 pw.println("<a href="welcome?pageNow=" mce_href="welcome?pageNow="" + i + ">" + i + "</a>");  
  104.             }  
  105.             int pageCount=ubc.getPageCount();  
  106.             if (pageNow != pageCount) {  
  107.                 pw.println("<a href="welcome?pageNow=" mce_href="welcome?pageNow="" + (pageNow + 1)  
  108.                         + ">下一页</a>");  
  109.             }  
  110.             pw.println("</center></body>");  
  111.   
  112.             // String u = req.getParameter("uname");// 得到从LoginCl传递的用户名  
  113.             // String p = req.getParameter("pass");  
  114.         } catch (Exception ex) {  
  115.             ex.printStackTrace();  
  116.         }  
  117.     }  
  118.   
  119.     public void doGet(HttpServletRequest req, HttpServletResponse res)  
  120.             throws ServletException, IOException {  
  121.         process(req, res);  
  122.     }  
  123.   
  124.     public void doPost(HttpServletRequest req, HttpServletResponse res)  
  125.             throws ServletException, IOException {  
  126.         process(req, res);  
  127.     }  
  128.   
  129.     public void destroy() {  
  130.     }  
  131.   
  132. }  

 

模型层

ConnDB.java(数据库连接)

[java]  view plain copy
  1. //从数据库中得到连接  
  2. package com.tsinghua;  
  3.   
  4. import java.sql.*;  
  5.   
  6. public class ConnDB{  
  7.     private Connection ct=null;  
  8.     public Connection getConn(){  
  9.         try{  
  10.             // 连接数据库  
  11.             Class.forName("com.mysql.jdbc.Driver");// 加载驱动  
  12.             // 得到连接  
  13.             ct = DriverManager.getConnection(  
  14.                     "jdbc:mysql://localhost:3306/spdb""root""root");  
  15.         }catch(Exception ex){  
  16.             ex.printStackTrace();  
  17.         }  
  18.         return ct;  
  19.     }     
  20. }  

UserBean.java(表示users表)

[java]  view plain copy
  1. //这是一个UserBean<---------->users表映射  
  2. //它的一个对象<----------->users表的一条记录对应  
  3. //数据  
  4. package com.tsinghua;  
  5.   
  6. public class UserBean {  
  7.     private int userId;  
  8.     private String username;  
  9.     private String passwd;  
  10.     private String email;  
  11.     private int grade;  
  12.       
  13.     public int getUserId() {  
  14.         return userId;  
  15.     }  
  16.     public void setUserId(int userId) {  
  17.         this.userId = userId;  
  18.     }  
  19.     public String getUsername() {  
  20.         return username;  
  21.     }  
  22.     public void setUsername(String username) {  
  23.         this.username = username;  
  24.     }  
  25.     public String getPasswd() {  
  26.         return passwd;  
  27.     }  
  28.     public void setPasswd(String passwd) {  
  29.         this.passwd = passwd;  
  30.     }  
  31.     public String getEmail() {  
  32.         return email;  
  33.     }  
  34.     public void setEmail(String email) {  
  35.         this.email = email;  
  36.     }  
  37.     public int getGrade() {  
  38.         return grade;  
  39.     }  
  40.     public void setGrade(int grade) {  
  41.         this.grade = grade;  
  42.     }  
  43. }  

UserBeanCl.java(业务逻辑控制)

 

[java]  view plain copy
  1. //这是一个处理类(处理users表)<------->操作UserBean  
  2. //业务逻辑在这里  
  3. package com.tsinghua;  
  4.   
  5. import java.sql.*;  
  6. import java.util.*;  
  7.   
  8. public class UserBeanCl {  
  9.     // 业务逻辑,有一句话:能用私有的就不要用私有  
  10.     private Connection ct = null;  
  11.     private PreparedStatement ps = null;  
  12.     private ResultSet rs = null;  
  13.     private int pageCount = 0;// 共有几页(计算)  
  14.       
  15.     //返回pageCount  
  16.     public int getPageCount(){  
  17.         return this.pageCount;  
  18.     }  
  19.   
  20.       
  21.     // 分页显示  
  22.     public ArrayList getResultByPage(int pageNow, int pageSize) {  
  23.             ArrayList al = new ArrayList();           
  24.             try {  
  25.             int rowCount = 0;// 共有几条记录(查表)  
  26.   
  27.             // 首先得到rowCount  
  28.             // 连接数据库  
  29.             ConnDB cd = new ConnDB();  
  30.             ct = cd.getConn();  
  31.             ps = ct.prepareStatement("select count(*) from users");  
  32.             rs = ps.executeQuery();  
  33.             if (rs.next()) {  
  34.                 rowCount = rs.getInt(1);  
  35.             }  
  36.             // 计算pageCount  
  37.             if (rowCount % pageSize == 0) {  
  38.                 pageCount = rowCount / pageSize;  
  39.             } else {  
  40.                 pageCount = rowCount / pageSize + 1;  
  41.             }  
  42.             ps = ct.prepareStatement("select * from users limit "  
  43.                     + (pageNow - 1) * pageSize + "," + pageSize);  
  44.             // 给问号赋值  
  45.             // ps.setInt(1,(pageNow-1)*pageSize);  
  46.             // ps.setInt(2,pageSize );  
  47.             rs = ps.executeQuery();  
  48.             while (rs.next()) {  
  49.                 // 将rs中的每一条记录封装到UserBean ub,实现一号线  
  50.                 UserBean ub = new UserBean();  
  51.                 ub.setUserId(rs.getInt(1));  
  52.                 ub.setUsername(rs.getString(2));  
  53.                 ub.setPasswd(rs.getString(3));  
  54.                 ub.setEmail(rs.getString(4));  
  55.                 ub.setGrade(rs.getInt(5));  
  56.   
  57.                 // 实现第二根线,将ub放入到ArrayList中  
  58.                 al.add(ub);  
  59.             }  
  60.         } catch (Exception ex) {  
  61.             ex.printStackTrace();  
  62.         }finally{  
  63.             this.close();  
  64.         }  
  65.         return al;  
  66.     }  
  67.   
  68.     // 验证用户  
  69.     public boolean checkUser(String u, String p) {  
  70.         boolean b = false;  
  71.         try {  
  72.             // 得到连接  
  73.             ConnDB cd = new ConnDB();  
  74.             ct = cd.getConn();  
  75.   
  76.             ps = ct.prepareStatement("select passwd from users where username='"  
  77.                     + u + "'");  
  78.             // ps.setString(1,u);  
  79.             rs = ps.executeQuery();  
  80.             System.out.println("进入验证");  
  81.             if (rs.next()) {  
  82.                 System.out.println("有结果");  
  83.                 String dbPasswd = rs.getString(1);  
  84.                 if (dbPasswd.equals(p)) {  
  85.                     b = true;  
  86.                 }  
  87.             }  
  88.         } catch (Exception ex) {  
  89.             ex.printStackTrace();  
  90.         } finally {  
  91.             this.close();  
  92.         }  
  93.         return b;  
  94.     }  
  95.   
  96.     // 关闭资源  
  97.     public void close() {  
  98.         try {  
  99.             if (rs != null) {  
  100.                 rs.close();  
  101.                 rs = null;  
  102.             }  
  103.             if (ps != null) {  
  104.                 ps.close();  
  105.                 ps = null;  
  106.             }  
  107.             if (ct != null) {  
  108.                 ct.close();  
  109.                 ct = null;  
  110.             }  
  111.         } catch (Exception ex) {  
  112.             ex.printStackTrace();  
  113.         }  
  114.     }  
  115. }  

(三)网站框架的改进

程序设计不合理,因为其将界面和业务逻辑放在一起(moddel1模式),存在以下问题:
1.在LoginCl.Java文件和Wel.java文件中都操作了数据库,它们的
逻辑相似,有重复代码(潜在规则:当一段代码出现了三次或三次以上,需封装在一个类里面)
2.整个框架没有清晰地层次关系,显得非常乱
3.代码不优雅,可读性差,可维护性差

 

改进方案:
1.进行分层(界面层、业务逻辑层)【mv模式】
m——》model模型
v——》view视图

改进前:

改进后:


2.将常用的代码(比如连接数据库),封装到类中

 

为什么在UserBeanCl.java中的分页显示返回ArrayList集合,而不是直接返回ResultSet
1.如果返回ResultSet,那么我们在使用ResultSet时,是不能关闭
与该ResultSet相互关联的数据库资源,从而造成资源浪费
2.如果返回ResultSet,我们只能使用rs.getInt(?),rs.getString(?)...这样的方法来得到结果,代码可读性不好,维护不方便。

 

 

根据前面的说明,我们可以利用集合,比如:ArrayList作为中转,这样,就可以尽快的关闭rs,数据库连接···,同时跟能体现面向对象编程,代码的可读性更好。

 

(四)用户登录系统功能改进
用户登录网站(servlet版本1.2)总结version1.2新增加的功能:
1.用户在一定时间内不需要重新登录
2.将model1——>mv模式,实现了界面和业务逻辑分离


原结构

用户登录网站1.1版本(分页 cookie处理)

标签: stringexceptionimportloginnullsession
  993人阅读  评论(0)  收藏  举报
  分类:

Login.Java

[java]  view plain copy
  1. package com.tsinghua;  
  2.   
  3. import javax.servlet.*;  
  4. import javax.servlet.http.*;  
  5. import java.io.*;  
  6.   
  7. public class Login extends HttpServlet {  
  8.     public Login(){  
  9.         super();  
  10.     }  
  11.       
  12.     public void init() throws ServletException{}  
  13.     public void process(HttpServletRequest req,HttpServletResponse res)  
  14.         throws ServletException,IOException{  
  15.         try{              
  16.            //中文乱码解决  
  17.            res.setContentType("text/html;charset=UTF-8");  
  18.             //业务逻辑  
  19.             PrintWriter pw=res.getWriter();  
  20.             //返回登录界面  
  21.             pw.println("<html>");  
  22.             pw.println("<body>");  
  23.             //得到erro信息  
  24.             String info=(String)req.getParameter("info");  
  25.             if(info!=null){  
  26.                 pw.println("<h1>你的用户名或是密码错误!</h1><br>");  
  27.             }  
  28.             pw.println("<h1>登录界面</h1>");  
  29.             pw.println("<form action=logincl method=post>");  
  30.             pw.println("用户名:<input type=text name=username><br>");  
  31.             pw.println("密码:<input type=password name=passwd><br>");  
  32.             pw.println("<input type=checkbox name=keep value=2>两周内不用重新登录<br>");  
  33.             pw.println("<input type=submit value=loging><br>");  
  34.             pw.println("</form>");  
  35.             pw.println("</body>");  
  36.             pw.println("</html>");  
  37.         }catch(Exception ex){  
  38.             ex.printStackTrace();  
  39.         }  
  40.     }  
  41.     public void doGet(HttpServletRequest req,HttpServletResponse res)  
  42.         throws ServletException,IOException{  
  43.         process(req,res);  
  44.     }  
  45.     public void doPost(HttpServletRequest req,HttpServletResponse res)  
  46.         throws ServletException,IOException{  
  47.         process(req,res);  
  48.     }  
  49.     public void destroy(){  
  50.         super.destroy();  
  51.     }  
  52. }  

LoginCl.java

[java]  view plain copy
  1. package com.tsinghua;  
  2.   
  3. import javax.servlet.*;  
  4. import javax.servlet.http.*;  
  5. import java.io.*;  
  6. import java.sql.*;  
  7.   
  8. public class LoginCl extends HttpServlet {  
  9.     public LoginCl() {  
  10.         super();  
  11.     }  
  12.   
  13.     public void init() throws ServletException {  
  14.     }  
  15.   
  16.     // req:用于获得浏览器的信息  
  17.     // res:用于向浏览器返回信息(我就是服务器)  
  18.     public void process(HttpServletRequest req, HttpServletResponse res)  
  19.             throws ServletException, IOException {  
  20.         res.setContentType("text/html;charset=UTF-8");// 处理中文乱码  
  21.         PrintWriter pw = res.getWriter();  
  22.   
  23.         Connection ct = null;  
  24.         Statement sm = null;  
  25.         ResultSet rs = null;  
  26.         try {  
  27.             // 接收用户名和密码  
  28.             String u = req.getParameter("username");  
  29.             String p = req.getParameter("passwd");  
  30.   
  31.             // 连接<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库" target='_blank' style='color:#df3434; font-weight:bold;'>数据库</a>  
  32.             Class.forName("com.<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库" target='_blank' style='color:#df3434; font-weight:bold;'>MySQL</a>.jdbc.Driver");// 加载驱动  
  33.             // 得到连接  
  34.             ct = DriverManager.getConnection(  
  35.                     "jdbc:mysql://localhost:3306/spdb""root""root");  
  36.             // 创建Statement  
  37.             sm = ct.createStatement();  
  38.             // sql注入漏洞  
  39.             // rs=sm.executeQuery("select * from users where username='"+u  
  40.             // +"' and passwd='"+p+"'");  
  41.             rs = sm.executeQuery("select passwd from users where username='"  
  42.                     + u + "'");  
  43.   
  44.             if (rs.next()) {  
  45.                 // 说明用户是存在的  
  46.                 String dbPasswd = rs.getString(1);  
  47.                 if (dbPasswd.equals(p)) {  
  48.                     // 合法用户  
  49.                     String keep = req.getParameter("keep");  
  50.                     if (keep != null) {  
  51.                         // 将用户名和密码保存在客户端(cookie)  
  52.                         // 创建  
  53.                         Cookie name = new Cookie("myname", u);  
  54.                         Cookie pass = new Cookie("mypasswd", p);  
  55.                         // 设置时间  
  56.                         name.setMaxAge(14 * 24 * 3600);  
  57.                         name.setMaxAge(14 * 24 * 3600);  
  58.                         // 回写到客户端  
  59.                         res.addCookie(name);  
  60.                         res.addCookie(pass);  
  61.                     }  
  62.                     // 将用户信息存入session中  
  63.                     HttpSession hs = req.getSession(true);  
  64.                     hs.setMaxInactiveInterval(30);  
  65.                     hs.setAttribute("name", u);  
  66.                     res.sendRedirect("welcome");// 跳转  
  67.                 } else {  
  68.                     res.sendRedirect("login");  
  69.                 }  
  70.             } else {  
  71.                 // 说明用户名不存在  
  72.                 res.sendRedirect("login");  
  73.             }  
  74.         } catch (Exception ex) {  
  75.             ex.printStackTrace();  
  76.         } finally {// 按打开对象的逆序关闭对象  
  77.             try {  
  78.                 if (rs != null) {  
  79.                     rs.close();  
  80.                 }  
  81.                 if (sm != null) {  
  82.                     sm.close();  
  83.                 }  
  84.                 if (ct != null) {  
  85.                     ct.close();  
  86.                 }  
  87.             } catch (Exception ex) {  
  88.                 ex.printStackTrace();  
  89.             }  
  90.         }  
  91.     }  
  92.   
  93.     public void doGet(HttpServletRequest req, HttpServletResponse res)  
  94.             throws ServletException, IOException {  
  95.         process(req, res);  
  96.     }  
  97.   
  98.     public void doPost(HttpServletRequest req, HttpServletResponse res)  
  99.             throws ServletException, IOException {  
  100.         process(req, res);  
  101.     }  
  102.   
  103.     public void destroy() {  
  104.     }  
  105.   
  106. }  

Wel.java

[java]  view plain copy
  1. package com.tsinghua;  
  2.   
  3. import java.io.*;  
  4. import java.sql.*;  
  5.   
  6. import javax.servlet.*;  
  7. import javax.servlet.http.*;  
  8.   
  9. public class Wel extends HttpServlet {  
  10.     public Wel() {  
  11.         super();  
  12.     }  
  13.   
  14.     public void init() throws ServletException {  
  15.     }  
  16.   
  17.     public void process(HttpServletRequest req, HttpServletResponse res)  
  18.             throws ServletException, IOException {  
  19.         res.setContentType("text/html;charset=UTF-8");  
  20.         PrintWriter pw = res.getWriter();  
  21.         Connection ct = null;  
  22.         PreparedStatement ps = null;  
  23.         ResultSet rs = null;  
  24.         try {  
  25.             // 从session中得到用户名  
  26.             HttpSession hs = req.getSession(true);  
  27.             String myName = (String) hs.getAttribute("name");  
  28.             String name="";  
  29.             String passwd="";  
  30.   
  31.             if (myName == null) {  
  32.                 // 如果session中没有用户信息,再看看有没有cookie信息  
  33.                 // 从客户端得到所有的cookie信息  
  34.                 Cookie[] allCookies = req.getCookies();  
  35.                 int i = 0;  
  36.                 // 如果allCookies不为空  
  37.                 if (allCookies != null) {  
  38.                     for (i = 0; i < allCookies.length; i++) {// 从中取出cookie  
  39.                         // 依次取出  
  40.                         Cookie temp = allCookies[i];  
  41.                         if (temp.getName().equals("myname")) {  
  42.                             // 得到cookie的值  
  43.                             name = temp.getValue();  
  44.                         } else if (temp.getName().equals("mypasswd")) {  
  45.                             passwd = temp.getValue();  
  46.                         }  
  47.                     }  
  48.                     if(!name.equals("")&&!passwd.equals("")){  
  49.                         //到LoginCl.java去验证  
  50.                         res.sendRedirect("logincl?username="+name+"&passwd="+passwd);  
  51.                         return;  
  52.                     }  
  53.                 }  
  54.                 // 返回登陆界面  
  55.                 res.sendRedirect("login?info=error1");  
  56.                 return;  
  57.             }  
  58.             // 调整格式  
  59.             pw.println("<body><center>");  
  60.             // 在servlet中显示图片  
  61.             pw.println("<img src="images/lola.gif" mce_src="images/lola.gif"><br>");  
  62.             pw.println("Welcom,hello<br>");  
  63.             pw.println("你的用户名是:" + myName);  
  64.             // 做个超链接  
  65.             pw.println("<br><a href="login" mce_href="login">返回重新登录</a>");  
  66.   
  67.             // ================分页功能===============  
  68.             int pageSize = 3;// 一页显示几条记录(规定)  
  69.             int pageNow = 1;// 希望显示第几页(规定)  
  70.             int rowCount = 0;// 共有几条记录(查表)  
  71.             int pageCount = 0;// 共有几页(计算)  
  72.   
  73.             // 动态的接收pageNow  
  74.             String sPageNow = req.getParameter("pageNow");  
  75.             if (sPageNow != null) {  
  76.                 pageNow = Integer.parseInt(sPageNow);// 转换成整数  
  77.             }  
  78.   
  79.             // 首先得到rowCount  
  80.             // 连接数据库  
  81.             Class.forName("com.mysql.jdbc.Driver");// 加载驱动  
  82.             // 得到连接  
  83.             ct = DriverManager.getConnection(  
  84.                     "jdbc:mysql://localhost:3306/spdb""root""root");  
  85.             ps = ct.prepareStatement("select count(*) from users");  
  86.             rs = ps.executeQuery();  
  87.             if (rs.next()) {  
  88.                 rowCount = rs.getInt(1);  
  89.             }  
  90.             // 计算pageCount  
  91.             if (rowCount % pageSize == 0) {  
  92.                 pageCount = rowCount / pageSize;  
  93.             } else {  
  94.                 pageCount = rowCount / pageSize + 1;  
  95.             }  
  96.             ps = ct.prepareStatement("select * from users limit "  
  97.                     + (pageNow - 1) * pageSize + "," + pageSize);  
  98.             // 给问号赋值  
  99.             // ps.setInt(1,(pageNow-1)*pageSize);  
  100.             // ps.setInt(2,pageSize );  
  101.             rs = ps.executeQuery();  
  102.             // 表头  
  103.             pw.println("<table border=1>");  
  104.             pw.println("<tr><th>id</th><th>name</th><th>passwd</th><th>email</th><th>grade</th></tr>");  
  105.             while (rs.next()) {  
  106.                 pw.println("<tr>");  
  107.                 pw.println("<td>" + rs.getInt(1) + "</td>");  
  108.                 pw.println("<td>" + rs.getString(2) + "</td>");  
  109.                 pw.println("<td>" + rs.getString(3) + "</td>");  
  110.                 pw.println("<td>" + rs.getString(4) + "</td>");  
  111.                 pw.println("<td>" + rs.getInt(5) + "</td>");  
  112.                 pw.println("</tr>");  
  113.             }  
  114.             pw.println("</table>");  
  115.             // ================分页功能===============  
  116.   
  117.             // 上一页  
  118.             if (pageNow != 1) {  
  119.                 pw.println("<a href="welcome?pageNow=" mce_href="welcome?pageNow="" + (pageNow - 1)  
  120.                         + ">上一页</a>");  
  121.             }  
  122.             // 显示超链接  
  123.             // for (int i = 1; i <= pageCount; i++) {  
  124.             for (int i = pageNow; i <= pageNow + 4; i++) {  
  125.                 pw.println("<a href="welcome?pageNow=" mce_href="welcome?pageNow="" + i + ">" + i + "</a>");  
  126.             }  
  127.             if (pageNow != pageCount) {  
  128.                 pw.println("<a href="welcome?pageNow=" mce_href="welcome?pageNow="" + (pageNow + 1)  
  129.                         + ">下一页</a>");  
  130.             }  
  131.             pw.println("</center></body>");  
  132.   
  133.             // String u = req.getParameter("uname");// 得到从LoginCl传递的用户名  
  134.             // String p = req.getParameter("pass");  
  135.         } catch (Exception ex) {  
  136.             ex.printStackTrace();  
  137.         }  
  138.     }  
  139.   
  140.     public void doGet(HttpServletRequest req, HttpServletResponse res)  
  141.             throws ServletException, IOException {  
  142.         process(req, res);  
  143.     }  
  144.   
  145.     public void doPost(HttpServletRequest req, HttpServletResponse res)  
  146.             throws ServletException, IOException {  
  147.         process(req, res);  
  148.     }  
  149.   
  150.     public void destroy() {  
  151.     }  
  152.   
  153. }  

web.xml

 

 

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.   
  7.     <servlet>  
  8.         <servlet-name>Hello</servlet-name>  
  9.         <servlet-class>com.tsinghua.Hello</servlet-class>  
  10.     </servlet>  
  11.   
  12.   
  13.     <servlet-mapping>  
  14.         <servlet-name>Hello</servlet-name>  
  15.         <url-pattern>/servlet/Hello</url-pattern>  
  16.     </servlet-mapping>  
  17.   
  18.     <servlet>  
  19.         <servlet-name>login</servlet-name>  
  20.         <servlet-class>com.tsinghua.Login</servlet-class>  
  21.     </servlet>  
  22.   
  23.     <servlet-mapping>  
  24.         <servlet-name>login</servlet-name>  
  25.         <url-pattern>/login</url-pattern>  
  26.     </servlet-mapping>  
  27.   
  28.     <servlet>  
  29.         <servlet-name>logincl</servlet-name>  
  30.         <servlet-class>com.tsinghua.LoginCl</servlet-class>  
  31.     </servlet>  
  32.   
  33.     <servlet-mapping>  
  34.         <servlet-name>logincl</servlet-name>  
  35.         <url-pattern>/logincl</url-pattern>  
  36.     </servlet-mapping>  
  37.   
  38.     <servlet>  
  39.         <servlet-name>welcome</servlet-name>  
  40.         <servlet-class>com.tsinghua.Wel</servlet-class>  
  41.     </servlet>  
  42.   
  43.     <servlet-mapping>  
  44.         <servlet-name>welcome</servlet-name>  
  45.         <url-pattern>/welcome</url-pattern>  
  46.     </servlet-mapping>  
  47.   
  48.     <servlet>  
  49.         <servlet-name>hiddenform1</servlet-name>  
  50.         <servlet-class>com.tsinghua.HiddenForm1</servlet-class>  
  51.     </servlet>  
  52.   
  53.     <servlet-mapping>  
  54.         <servlet-name>hiddenform1</servlet-name>  
  55.         <url-pattern>/hiddenform1</url-pattern>  
  56.     </servlet-mapping>  
  57.   
  58.     <servlet>  
  59.         <servlet-name>hiddenform2</servlet-name>  
  60.         <servlet-class>com.tsinghua.HiddenForm2</servlet-class>  
  61.     </servlet>  
  62.   
  63.     <servlet-mapping>  
  64.         <servlet-name>hiddenform2</servlet-name>  
  65.         <url-pattern>/hiddenform2</url-pattern>  
  66.     </servlet-mapping>  
  67.   
  68.     <servlet>  
  69.         <servlet-name>sessiontest1</servlet-name>  
  70.         <servlet-class>com.tsinghua.SessionTest1</servlet-class>  
  71.     </servlet>  
  72.   
  73.     <servlet-mapping>  
  74.         <servlet-name>sessiontest1</servlet-name>  
  75.         <url-pattern>/sessiontest1</url-pattern>  
  76.     </servlet-mapping>  
  77.   
  78.     <servlet>  
  79.         <servlet-name>sessiontest2</servlet-name>  
  80.         <servlet-class>com.tsinghua.SessionTest2</servlet-class>  
  81.     </servlet>  
  82.   
  83.     <servlet-mapping>  
  84.         <servlet-name>sessiontest2</servlet-name>  
  85.         <url-pattern>/sessiontest2</url-pattern>  
  86.     </servlet-mapping>  
  87.   
  88.     <servlet>  
  89.         <servlet-name>sessiontest3</servlet-name>  
  90.         <servlet-class>com.tsinghua.SessionTest3</servlet-class>  
  91.     </servlet>  
  92.   
  93.     <servlet-mapping>  
  94.         <servlet-name>sessiontest3</servlet-name>  
  95.         <url-pattern>/sessiontest3</url-pattern>  
  96.     </servlet-mapping>  
  97.   
  98.     <servlet>  
  99.         <servlet-name>cookietest1</servlet-name>  
  100.         <servlet-class>com.tsinghua.CookieTest1</servlet-class>  
  101.     </servlet>  
  102.   
  103.     <servlet-mapping>  
  104.         <servlet-name>cookietest1</servlet-name>  
  105.         <url-pattern>/cookietest1</url-pattern>  
  106.     </servlet-mapping>  
  107.   
  108.     <servlet>  
  109.         <servlet-name>cookietest2</servlet-name>  
  110.         <servlet-class>com.tsinghua.CookieTest2</servlet-class>  
  111.     </servlet>  
  112.   
  113.     <servlet-mapping>  
  114.         <servlet-name>cookietest2</servlet-name>  
  115.         <url-pattern>/cookietest2</url-pattern>  
  116.     </servlet-mapping>  
  117.       
  118.         <servlet>  
  119.         <servlet-name>cookietest3</servlet-name>  
  120.         <servlet-class>com.tsinghua.CookieTest3</servlet-class>  
  121.     </servlet>  
  122.   
  123.     <servlet-mapping>  
  124.         <servlet-name>cookietest3</servlet-name>  
  125.         <url-pattern>/cookietest3</url-pattern>  
  126.     </servlet-mapping>  
  127.   
  128. </web-app>  

 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_882552.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Grafana+Prometheus+blackbox_exporter+Alertmanager 监控主机、端口存活及网站接口状态(二)

1.摘要 本文主要介绍如何使用blackbox_exporter的收集被监控主机的网站状态、端口等信息&#xff0c;借助 Prometheus 最终以仪表盘的形式显示在 Grafana 中。 blackbox_exporter是Prometheus 官方提供的 exporter 之一&#xff0c;可以提供 http、dns、tcp、icmp 的监控数据…

解决:Godaddy域名解析很慢,网站经常打不开或者解析失败

域名是在goddady买的&#xff0c;去dns解析自己的域名之后&#xff0c;发现打开网站经常打不开、很慢&#xff0c;解析出错等问题。我一开始以为这个是不是自己的服务器问题&#xff0c;毕竟买的国外的。 但是后面我发现&#xff0c;不解析域名打开的网站很快啊&#xff0c;自…

好东西大家分享:说说大型高并发高负载网站的系统架构

转载请保留出处&#xff1a;俊麟 Michael’s blog (http://www.toplee.com/blog/?p71)Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p71 我在CERNET做过拨号接入平台的搭建&#xff0c;而后在Yahoo&3721从事过搜索引擎前端开发&#xff0c;又在MOP处理过…

大型网站--负载均衡架构

转自&#xff1a;http://www.cnblogs.com/and/p/3366400.html 负载均衡 &#xff08;Load Balancing&#xff09; 负载均衡建立在现有网络结构之上&#xff0c;它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性…

如何提高网站ip流量

网站流量是衡量一个网站质量的标准之一&#xff0c;那么怎么提高网站流量呢&#xff0c;网站流量提高有哪些方法呢&#xff0c;下面就来介绍一下&#xff1a; 1、域名的选择在选择域名的时候最好选择简短并且与自己企业名称或者业务相关的域名&#xff0c;域名注册最好选择.co…

大型网站架构演变和知识体系(转载)

之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什么需要做这样的演变&#xff0c;再加上近来感觉有不少同学都很难明白为什么…

使用PortTunnel来透过局域网架网站

如今宽带已经不再是一个新鲜名词了&#xff0c;很多朋友也希望能够为丰富网络资源贡献一些自己的力量&#xff0c;而通过宽带架设Web网站或者是提供FTP下载服务则是最佳的选择。不过现在很多宽带用户都是使用电信、长城、聚友等一些城域网&#xff0c;也就是说整个公司在Intern…

公众号网站——微信登录

1、在微信公众号平台&#xff1a;接口权限->网页服务->网页授权 点击修改进入功能设置。设置网页授权域名 2、下载txt文件&#xff0c;放入服务器&#xff0c;填写域名。注意&#xff1a; 域名/MP_***.txt(文件名) 要能访问到下载下来放到服务器上的txt文件 &#xff0…

渗透实用的工具网站 希望对你们有用,

希望对你们有用&#xff0c; 以前找东西&#xff0c;要么记不住&#xff0c;要么找不到 http://dns.aizhan.com&#xff08;ip翻查域名绑定&#xff09; http://ping.chinaz.com/ https://www.17ce.com/ &#xff08;检测是CDN&#xff09; https://xssaq.com (xss平台…

MVC开发模式下网站策划/产品经理的角色定位

当前国内的主流建站程序都是采用了MVC三层架构来开发&#xff0c;对于网站的后期维护与应用过程&#xff0c;都有很大的裨益。由于MVC开发模式将前端设计、程序开发进行了明确的定义与分工&#xff0c;但是并没有对网站策划进行过多的定义与着墨&#xff0c;在这里&#xff0c;…

网站链接被微信屏蔽拦截了怎么办?VJump帮你解除屏蔽

出现这种情的原因呢&#xff0c;我相信大家也去了解了很多&#xff0c;但是对于商家来说&#xff0c;我们要避免出现这种情况&#xff0c;或出现了要立马解决。了解原因再去想解决办法是技术的事情。一天没解决&#xff0c;就多一天的损失。原因大同小异&#xff0c;无非是域名…

网站被微信浏览器拦截怎么办 微信屏蔽网址打开如何解决

先来认识一下微信屏蔽的原理。按原理逐个攻破&#xff0c;整理如下&#xff1a;微信屏蔽的原理 一、微信系统的两个检测手段&#xff1a;第一是系统的自动检测&#xff1b;第二是微信工作人员的人工检测。 二、 人工的检测很好理解&#xff0c;有用户投诉举报&#xff0c;在多…

10.3使用Koa中间件构建网站雏形

Chapter&#xff1a;10.服务端环境搭建和开发过程 10.3使用Koa中间件构建网站雏形 1.安装依赖包 老师提供的package.json 文件包含了要下载的包(查看该文件代码很容易理解&#xff0c;相当于就是一个写好的脚本) 10.3.1package.json文件内容.png 步骤 创建文件主目录webApp…

10.6网站服务端Ajax接口的完整开发(用于数据交互)

Chapter&#xff1a;10.服务端环境搭建和开发过程 10.6网站服务端Ajax接口的完整开发(用于数据交互) 1.初步了解接口&获取mock数据文件 查看网站 dushu.xiaomi.com (实际开发中如果http接口没有写好需要用测试数据的话&#xff0c;应该是和后端沟通拿到测试数据)&#x…

用心服务每一所高校:传智播客旗下院校服务品牌——院校邦官方网站正式上线!

文章目录 院校邦官网介绍院校邦业务范围介绍院校邦展望 院校邦官网介绍 经过长达半年时间的筹备&#xff0c;近日&#xff0c;传智播客旗下院校服务品牌——院校邦官方网站&#xff08;www.ityxb.com&#xff09;正式上线运行。 官网旨在为教师备课、技能充电、教学改革提供一…

seo优化之怎样降低网站跳出率

前面我们写到了什么是网站PV&#xff0c;其中就谈到了什么是跳出率&#xff0c;跳出率就是只访问了网站一个页面就离开了的用户占全部访问用户的百分比。今天深圳SEO就来详细解释一下什么是跳出率&#xff0c;怎样把跳出率降到最低。 只访问了网站一个页面就离开了网站&#x…

优秀网站导航设计的6个原则

在建立一个优秀的网站时&#xff0c;很难低估网站导航的重要性。虽然它不像其他一些主题那样华而不实&#xff0c;但错误的做法可能会使您的企业损失数万美元。 例如&#xff0c;考虑以下错误&#xff1a; 潜在客户没有意识到您提供特定服务&#xff0c;因此他们不会与您联系…

响应式网站建设:为什么它对您来说很重要

随着移动网站流量的持续增长&#xff0c;公司不能再拖延响应性网站建设的时间。 响应式网站设计早就退出了“早期采用者”阶段。互联网用户现在完全希望网站能够智能地响应他们使用的任何设备。 2017年&#xff0c;全球50.3%的网站访问来自手机。 我们走了很长一段路&#x…

如何针对搜索结果的精选代码进行seo优化

如果您希望为您的网站吸引更多流量并让更多用户点击您的内容&#xff0c;那么在搜索引擎中显示为精选摘要可能有所帮助。但是&#xff0c;如何将您的内容置于搜索结果中这个令人垂涎的地方? 在这篇文章中&#xff0c;深圳seo外包公司千赋科技讲带大家一起探讨&#xff1a; 什…

怎么才能做好营销型网站建设?

你有没有想过&#xff0c;是什么让一些网站如此受欢迎&#xff0c;而另一些网站却在初次访问后被忽视或很快被遗忘?一个好的网站不仅仅能吸引游客。最有效的网站将这些访问转化为实际的销售&#xff0c;可以帮助您建立强大的客户群。它所需要的只是一些智能的设计技巧、信息丰…