您的位置:首页 > 运维架构 > 网站架构

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

2010-11-20 06:04 423 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: