Login.java package com.tsinghua; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Login extends HttpServlet { public Login(){ super(); } public void init() throws ServletException{} public void process(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{ try{ //中文乱码解决 res.setContentType("text/html;charset=UTF-8"); //业务逻辑 PrintWriter pw=res.getWriter(); //返回登录界面 pw.println("<html>"); pw.println("<body>"); //得到erro信息 String info=(String)req.getParameter("info"); if(info!=null){ pw.println("<h1>你的用户名或是密码错误!</h1><br>"); } 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=passwd><br>"); pw.println("<input type=checkbox name=keep value=2>两周内不用重新登录<br>"); pw.println("<input type=submit value=loging><br>"); pw.println("</form>"); pw.println("</body>"); pw.println("</html>"); }catch(Exception ex){ ex.printStackTrace(); } } public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{ process(req,res); } public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{ process(req,res); } public void destroy(){ super.destroy(); } } LoginCl.java package com.tsinghua; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.sql.*; public class LoginCl extends HttpServlet { public LoginCl() { super(); } public void init() throws ServletException { } // req:用于获得浏览器的信息 // res:用于向浏览器返回信息(我就是服务器) public void process(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html;charset=UTF-8");// 处理中文乱码 PrintWriter pw = res.getWriter(); Connection ct = null; Statement sm = null; ResultSet rs = null; try { // 接收用户名和密码 String u = req.getParameter("username"); String p = req.getParameter("passwd"); // 连接数据库 Class.forName("com.mysql.jdbc.Driver");// 加载驱动 // 得到连接 ct = DriverManager.getConnection( "jdbc:mysql://localhost:3306/spdb", "root", "root"); // 创建Statement sm = ct.createStatement(); // sql注入漏洞 // rs=sm.executeQuery("select * from users where username='"+u // +"' and passwd='"+p+"'"); rs = sm.executeQuery("select passwd from users where username='" + u + "'"); if (rs.next()) { // 说明用户是存在的 String dbPasswd = rs.getString(1); if (dbPasswd.equals(p)) { // 合法用户 String keep = req.getParameter("keep"); if (keep != null) { // 将用户名和密码保存在客户端(cookie) // 创建 Cookie name = new Cookie("myname", u); Cookie pass = new Cookie("mypasswd", p); // 设置时间 name.setMaxAge(14 * 24 * 3600); name.setMaxAge(14 * 24 * 3600); // 回写到客户端 res.addCookie(name); res.addCookie(pass); } // 将用户信息存入session中 HttpSession hs = req.getSession(true); hs.setMaxInactiveInterval(30); hs.setAttribute("name", u); res.sendRedirect("welcome");// 跳转 } else { res.sendRedirect("login"); } } else { // 说明用户名不存在 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(); } } } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { process(req, res); } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { process(req, res); } public void destroy() { } } Wel.java package com.tsinghua; import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class Wel extends HttpServlet { public Wel() { super(); } public void init() throws ServletException { } public void process(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html;charset=UTF-8"); PrintWriter pw = res.getWriter(); Connection ct = null; PreparedStatement ps = null; ResultSet rs = null; try { // 从session中得到用户名 HttpSession hs = req.getSession(true); String myName = (String) hs.getAttribute("name"); String name=""; String passwd=""; if (myName == null) { // 如果session中没有用户信息,再看看有没有cookie信息 // 从客户端得到所有的cookie信息 Cookie[] allCookies = req.getCookies(); int i = 0; // 如果allCookies不为空 if (allCookies != null) { for (i = 0; i < allCookies.length; i++) {// 从中取出cookie // 依次取出 Cookie temp = allCookies[i]; if (temp.getName().equals("myname")) { // 得到cookie的值 name = temp.getValue(); } else if (temp.getName().equals("mypasswd")) { passwd = temp.getValue(); } } if(!name.equals("")&&!passwd.equals("")){ //到LoginCl.java去验证 res.sendRedirect("logincl?username="+name+"&passwd="+passwd); return; } } // 返回登陆界面 res.sendRedirect("login?info=error1"); return; } // 调整格式 pw.println("<body><center>"); // 在servlet中显示图片 pw.println("<img src="images/lola.gif" mce_src="images/lola.gif"><br>"); pw.println("Welcom,hello<br>"); pw.println("你的用户名是:" + myName); // 做个超链接 pw.println("<br><a href="login" mce_href="login">返回重新登录</a>"); // ================分页功能=============== int pageSize = 3;// 一页显示几条记录(规定) int pageNow = 1;// 希望显示第几页(规定) int rowCount = 0;// 共有几条记录(查表) int pageCount = 0;// 共有几页(计算) // 动态的接收pageNow String sPageNow = req.getParameter("pageNow"); if (sPageNow != null) { pageNow = Integer.parseInt(sPageNow);// 转换成整数 } // 首先得到rowCount // 连接数据库 Class.forName("com.mysql.jdbc.Driver");// 加载驱动 // 得到连接 ct = DriverManager.getConnection( "jdbc:mysql://localhost:3306/spdb", "root", "root"); 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 * from users limit " + (pageNow - 1) * pageSize + "," + pageSize); // 给问号赋值 // ps.setInt(1,(pageNow-1)*pageSize); // ps.setInt(2,pageSize ); rs = ps.executeQuery(); // 表头 pw.println("<table border=1>"); pw.println("<tr><th>id</th><th>name</th><th>passwd</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="welcome?pageNow=" mce_href="welcome?pageNow="" + (pageNow - 1) + ">上一页</a>"); } // 显示超链接 // for (int i = 1; i <= pageCount; i++) { for (int i = pageNow; i <= pageNow + 4; i++) { pw.println("<a href="welcome?pageNow=" mce_href="welcome?pageNow="" + i + ">" + i + "</a>"); } if (pageNow != pageCount) { pw.println("<a href="welcome?pageNow=" mce_href="welcome?pageNow="" + (pageNow + 1) + ">下一页</a>"); } pw.println("</center></body>"); // String u = req.getParameter("uname");// 得到从LoginCl传递的用户名 // String p = req.getParameter("pass"); } catch (Exception ex) { ex.printStackTrace(); } } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { process(req, res); } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { process(req, res); } public void destroy() { } } web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>com.tsinghua.Hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/servlet/Hello</url-pattern> </servlet-mapping> <servlet> <servlet-name>login</servlet-name> <servlet-class>com.tsinghua.Login</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>logincl</servlet-name> <servlet-class>com.tsinghua.LoginCl</servlet-class> </servlet> <servlet-mapping> <servlet-name>logincl</servlet-name> <url-pattern>/logincl</url-pattern> </servlet-mapping> <servlet> <servlet-name>welcome</servlet-name> <servlet-class>com.tsinghua.Wel</servlet-class> </servlet> <servlet-mapping> <servlet-name>welcome</servlet-name> <url-pattern>/welcome</url-pattern> </servlet-mapping> <servlet> <servlet-name>hiddenform1</servlet-name> <servlet-class>com.tsinghua.HiddenForm1</servlet-class> </servlet> <servlet-mapping> <servlet-name>hiddenform1</servlet-name> <url-pattern>/hiddenform1</url-pattern> </servlet-mapping> <servlet> <servlet-name>hiddenform2</servlet-name> <servlet-class>com.tsinghua.HiddenForm2</servlet-class> </servlet> <servlet-mapping> <servlet-name>hiddenform2</servlet-name> <url-pattern>/hiddenform2</url-pattern> </servlet-mapping> <servlet> <servlet-name>sessiontest1</servlet-name> <servlet-class>com.tsinghua.SessionTest1</servlet-class> </servlet> <servlet-mapping> <servlet-name>sessiontest1</servlet-name> <url-pattern>/sessiontest1</url-pattern> </servlet-mapping> <servlet> <servlet-name>sessiontest2</servlet-name> <servlet-class>com.tsinghua.SessionTest2</servlet-class> </servlet> <servlet-mapping> <servlet-name>sessiontest2</servlet-name> <url-pattern>/sessiontest2</url-pattern> </servlet-mapping> <servlet> <servlet-name>sessiontest3</servlet-name> <servlet-class>com.tsinghua.SessionTest3</servlet-class> </servlet> <servlet-mapping> <servlet-name>sessiontest3</servlet-name> <url-pattern>/sessiontest3</url-pattern> </servlet-mapping> <servlet> <servlet-name>cookietest1</servlet-name> <servlet-class>com.tsinghua.CookieTest1</servlet-class> </servlet> <servlet-mapping> <servlet-name>cookietest1</servlet-name> <url-pattern>/cookietest1</url-pattern> </servlet-mapping> <servlet> <servlet-name>cookietest2</servlet-name> <servlet-class>com.tsinghua.CookieTest2</servlet-class> </servlet> <servlet-mapping> <servlet-name>cookietest2</servlet-name> <url-pattern>/cookietest2</url-pattern> </servlet-mapping> <servlet> <servlet-name>cookietest3</servlet-name> <servlet-class>com.tsinghua.CookieTest3</servlet-class> </servlet> <servlet-mapping> <servlet-name>cookietest3</servlet-name> <url-pattern>/cookietest3</url-pattern> </servlet-mapping> </web-app>