web.xml:
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">
loginservlet
com.laolu.servlet.LoginServlet
loginservlet
/loginservlet
index.jsp
login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
login.jsp
LoginServlet.java:
package com.laolu.servlet;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.laolu.dao.UserDAO;
public class LoginServlet extends HttpServlet{
public void doGet (HttpServletRequest request,HttpServletResponse response){
String name = request.getParameter("uname");
byte[] b;
try {
b = name.getBytes("iso8859-1");
String username = new String(b,"UTF-8");
String password = request.getParameter("ps");
String text = request.getParameter("text");
//设置session范围属性
request.getSession().setAttribute("china", "李静");
//设置request范围属性
request.setAttribute("n", "肖人");
UserDAO user = new UserDAO();
boolean flag = user.findUser(username,password);
if(flag){
//将需要转发或发送的地址进行转码操作。这样在目标页面更好取值,以免乱码产生
String url = "forward/success.jsp?first=传递第一个参数&second=传递第二个参数";
url = new String(url.getBytes("UTF-8"),"ISO8859-1");
//客户端跳转。只有session范围的属性及url中参数会被传递下去
//response.sendRedirect(url);
//服务器端跳转。request对象、url中的参数会被传递下去
request.getRequestDispatcher(
url).forward(request, response);
}else{
response.sendRedirect("forward/error.jsp");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response){
doGet(request, response);
}
}
success.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'login.jsp' starting page
servlet登录成功。
<%= "session中取得的属性值"+ session.getAttribute("china") %>
<%="url中第一个参数:"+ new String(request.getParameter("first").getBytes("ISO8859-1"),"UTF-8") %>
<%="url中第二个参数:"+ new String(request.getParameter("second").getBytes("ISO8859-1"),"UTF-8") %>
<%="request中取得的属性值:"+ request.getAttribute("n") %>
<%=new String(request.getParameter("text").getBytes("ISO8859-1"),"UTF-8") %>
error.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'login.jsp' starting page
servlet输入错误,
请重新登录
UserDAO:
package com.laolu.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class UserDAO {
Connection conn = null;
//去连接数据库,查询userInfo表中的数据
//1.连接数据库
public Connection getCon(){
//1.加载数据库驱动程序:微软公司开发的数据库驱动程序jar包,添加到WEB-INF/lib目录下
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;DataBaseName=abc";
try {
Class.forName(driver);
try {
conn = DriverManager.getConnection(url,"sa","sasa");
System.out.println("数据库连接成功!");
System.out.println(conn);
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//取得数据库连接对象
return conn;
}
/**
* @通过用户名和密码查找用户
* @param name
* @param ps
*/
public boolean findUser(String name,String ps){
boolean flag = false;
conn = this.getCon();
//st对象用于执行sql语句
Statement st;
try {
st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from userinfo where uname='"+name+"' and ps='"+ps+"'");
while (rs.next()) {
String uname = rs.getString("uname");
String password = rs.getString("ps");
//System.out.println(uname);
return flag=true;
}
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
}
生成数据库表的脚本:a.sql
USE [abc]
GO
/****** 对象: Table [dbo].[userinfo] 脚本日期: 03/19/2012 14:25:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[userinfo](
[uname] [varchar](50) NOT NULL,
[ps] [varchar](50) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO