Jsp+Dao+Jdbc+Servelet 用户完整登录总结。
Index.jsp 实现用户登录页面,login_success.jsp实现用户登录成功的页面 显示用户XX登录成功!错误则跳转到login_failure.jsp
用户填写好用户名和密码后发出登录请求给servlet(tomcat启动要加载web.xml文件,web.xml会根据index的action找到web.xml中的servlet,然后由servlet控制分发请求调用登录方法,
Index.jsp–àweb.xml—àservlet.java—àdao—àdaoImpl–àservlet–àlogin_success.jsp
Index.jsp页面如下:
[xhtml] view plaincopy
- <%@ page language=”java” import=”java.util.*” pageEncoding=”gb2312″%>
- <%@page import=”java.util.*”%>
- <html>
- <head>
- <title>用户登录</title>
- </head>
- <body>
- <%
- if(request.getAttribute(“Error”)!=null)
- {
- // 有错误,要进行打印输出
- List all = (List)request.getAttribute(“Error”) ;
- Iterator iter = all.iterator() ;
- while(iter.hasNext())
- {
- %>
- <li><%=iter.next()%>
- <%
- }
- }
- %>
- <form action=”servlet/loginServlet” method=”Post”>
- <table align=”CENTER”>
- <tr><td colspan=”2″ align=”CENTER”><h3><font color=”#0000ff”><strong>用户登录</strong></font></h3></td></tr>
- <tr>
- <td align=”right”>用户名:</td>
- <td><input type=”text” name=”username”/></td>
- </tr>
- <tr>
- <td>密 码:</td>
- <td><input type=”password” name=”password”/></td>
- </tr>
- <tr>
- <td align=”center”><input type=”Submit” name=”submit” value=”提交”/></td>
- <td align=”center”><input type=”Reset” name=”reset” value=”重置”/></td>
- </tr>
- </table>
- </form>
- </body>
- </html>
web.xml文件如下
[xhtml] view plaincopy
- <?xml version=”1.0″ encoding=”gb2312″?>
- <web-app version=”2.4″
- xmlns=”http://java.sun.com/xml/ns/j2ee”
- xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
- xsi:schemaLocation=”http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”>
- <servlet>
- <description>This is the description of my J2EE component</description>
- <display-name>This is the display name of my J2EE component</display-name>
- <servlet-name>loginServlet</servlet-name>
- <servlet-class>com.lgy.servlet.loginServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>loginServlet</servlet-name>
- <url-pattern>/servlet/loginServlet</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
注意
Web.xm中的<url-pattern>/servlet/loginServlet</url-pattern>
和index.jsp中的action=“servlet/loginServlet”必须一致
下面是javaBean 所谓的VO(POJO)主要负责对用户表进行描述,设置用户的各项信息,返回用户的各项信息
[c-sharp] view plaincopy
- package com.lgy.vo;
- import java.util.List;
- public class login {
- private int id;
- private String username;
- private String password;
- private List errors;
- public boolean invalidate(){
- boolean flag=true;
- /**
- * 1.先验证输入不为空,在验证合法的输入格式。
- * 如果输入不为空,那么进行下一项合法的格式的验证
- */
- System.out.println(“这是pojo得到的用户名********:”+this.username);
- if(this.username==null||”".equals(this.username)){
- flag=false;
- errors.add(“用户名不能为空!”);
- }
- //合法格式的验证
- else{
- if(this.username.length()<3||this.username.length()>10)
- {
- flag=false;
- errors.add(“您应该输入合法的用户名,长度在3~10之间!”);
- }
- }
- if(this.password==null||”".equals(this.password)){
- flag=false;
- errors.add(“密码不能为空!”);
- }
- else{
- if(this.password.length()<3||this.password.length()>10){
- flag=false;
- errors.add(“您应该输入合法的密码,的长度在3~10之间!”);
- }
- }
- return flag;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public List getErrors() {
- return errors;
- }
- public void setErrors(List errors) {
- this.errors = errors;
- }
- }
下面是数据库的链接类 负责链接数据库
[java] view plaincopy
- // 本类只用于数据库连接及关闭操作
- package com.lgy.db ;
- import java.sql.* ;
- public class MysqlConnection
- {
- // 属性
- // 定义数据库操作的常量、对象
- // 数据库驱动程序
- private final String DBDRIVER = ”com.mysql.jdbc.Driver” ;
- // 数据库连接地址
- private final String DBURL = ”jdbc:mysql://localhost:3306/test” ;
- // 数据库用户名
- private final String DBUSER = ”root” ;
- // 数据库连接密码
- private final String DBPASSWORD = ”root” ;
- // 声明一个数据库连接对象
- private Connection conn = null ;
- // 在构造方法之中连接数据库
- public MysqlConnection()
- {
- try
- {
- // 加载驱动程序
- Class.forName(DBDRIVER) ;
- // 连接数据库
- conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
- }
- catch (Exception e)
- {
- System.out.println(e) ;
- }
- }
- // 返回一个数据库连接
- public Connection getConnection()
- {
- /// 返回连接对象
- return this.conn ;
- }
- // 关闭数据库连接
- public void close()
- {
- try
- {
- this.conn.close() ;
- }
- catch (Exception e)
- {
- }
- }
下面是servlet 控制处理用户发送来的请求
[java] view plaincopy
- package com.lgy.servlet;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.RequestDispatcher;
- import com.lgy.factory.DAOFactory;
- import com.lgy.vo.login;
- public class loginServlet extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doPost(request, response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- List errors = new ArrayList() ;
- String path = ”../index.jsp” ;
- String name=request.getParameter(“username”);
- System.out.println(“这是页面上的用户名:”+name);
- String pwd=request.getParameter(“password”);
- System.out.println(“这是页面上的密码:”+pwd);
- login lg=new login();
- lg.setUsername(name);
- lg.setPassword(pwd);
- lg.setErrors(errors);
- boolean b=lg.invalidate();
- System.out.println(“判断输入格式的真假”+b);
- //下面的判断为 如果输入的格式合法,那么我们进行数据库端得验证
- if(b){
- if(DAOFactory.getLoginDAOInstance().isLogin(lg)){
- System.out.println(“进行数据库端得判断***********”);
- path=”../success.jsp”;
- }else{
- errors.add(“错误的用户名和密码!”);
- }
- }
- request.setAttribute(“Error”, errors);
- request.setAttribute(“Lg”, lg);
- //request.getRequestDispatcher(path)
- request.getRequestDispatcher(path).forward(request, response);
- }
- }
下面是很据servlet的处理 由具体实现类 处理数据DAO
[java] view plaincopy
- package com.lgy.dao;
- import com.lgy.vo.login;
- public interface loginDao {
- public boolean isLogin(login lg);
- }
DAOFactory
[java] view plaincopy
- package com.lgy.factory;
- import com.lgy.dao.loginDao;
- import com.lgy.daoImp.loginDaoImp;
- public class DAOFactory {
- public static loginDao getLoginDAOInstance()
- {
- return new loginDaoImp() ;
- }
- }
DaoImpl
[c-sharp] view plaincopy
- package com.lgy.daoImp;
- import com.lgy.dao.*;
- import com.lgy.vo.login;
- import com.lgy.db.*;
- import java.sql.*;
- import java.sql.PreparedStatement;
- import java.sql.Connection;
- import java.sql.ResultSet;
- public class loginDaoImp implements loginDao {
- public boolean isLogin(login lg) {
- boolean flag = false;
- PreparedStatement pstm = null;
- ResultSet rs = null;
- String sql = null;
- MysqlConnection mc = new MysqlConnection();
- sql = ”select username,password from login where username=? and password=?”;
- try {
- System.out.println(“这是要用到的sql………………:”+sql);
- pstm=mc.getConnection().prepareStatement(sql);
- System.out.println(“@@@@@@@@要查询的用户名:”+lg.getUsername());
- pstm.setString(1, lg.getUsername());
- pstm.setString(2, lg.getPassword());
- rs = pstm.executeQuery();
- if (rs.next()) {
- flag = true;
- lg.setUsername(rs.getString(“username”));
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- return flag;
- }
- }
至于如何连接数据我我就不讲了,只要把jar包导进去就行了。
http://blog.csdn.net/wei_wei_hnu/article/details/6009747