Jsp+Dao+Jdbc+Servelet 用户完整登录总结

 

Index.jsp 实现用户登录页面,login_success.jsp实现用户登录成功的页面 显示用户XX登录成功!错误则跳转到login_failure.jsp

 

 

 

用户填写好用户名和密码后发出登录请求给servlettomcat启动要加载web.xml文件,web.xml会根据indexaction找到web.xml中的servlet,然后由servlet控制分发请求调用登录方法,

 

Index.jsp--àweb.xml---àservlet.java---àdao---àdaoImpl--àservlet--àlogin_success.jsp

 

 

Index.jsp页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@page import="java.util.*"%> 用户登录 <% if(request.getAttribute("Error")!=null) { // 有错误,要进行打印输出 List all = (List)request.getAttribute("Error") ; Iterator iter = all.iterator() ; while(iter.hasNext()) { %>

  • <%=iter.next()%> <% } } %>

    用户登录

    用户名:
    密  码:

     

     

     

    web.xml文件如下

    This is the description of my J2EE component This is the display name of my J2EE component loginServlet com.lgy.servlet.loginServlet loginServlet /servlet/loginServlet index.jsp  

     

     

    注意

    Web.xm中的<url-pattern>/servlet/loginServleturl-pattern>

    index.jsp中的action=servlet/loginServlet”必须一致

     

     

     

    下面是javaBean  所谓的VOPOJO)主要负责对用户表进行描述,设置用户的各项信息,返回用户的各项信息

     

     

    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; } }  

     

     

     

    下面是数据库的链接类  负责链接数据库

     

    // 本类只用于数据库连接及关闭操作 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  控制处理用户发送来的请求


     

    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

    package com.lgy.dao; import com.lgy.vo.login; public interface loginDao { public boolean isLogin(login lg); }  

     

     

     

    DAOFactory

    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

    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包导进去就行了。

     

     

     

  • 你可能感兴趣的:(j2ee)