基于JSP + servlet + javabean的MVC简单验证登录实例

来源:互联网 发布:java写xml 编辑:程序博客网 时间:2024/04/30 00:18

功能描述:用户输入登录信息提交给Servlet进行接收,Servlet接收到请求内容后进行验证然后根据验证结果跳转到相应页面。
MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。
建立数据库为后面登录做数据准备:

create table tbl_user(id int(11) unsigned not null auto_increment,name varchar(50) not null default '',password varchar(50) not null default '',primary key (id));insert into tbl_user(id,name,password)values(1,'huge','jingxiongdi'),(2,'huojianhua','baidoufu');

这里写图片描述

整体架构图:
这里写图片描述
各部分代码实现:
模型层: (javabean)
定义VO类即User.java,类中属性与数据表中一一对应

package com.vo;public class User {    private int id;    private String name;    private String password;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    @Override    public String toString() {        return "User [id=" + id + ", name=" + name + ", password=" + password + "]";    }}

定义DAO接口即UserDao.java
这里定义了一个需要参数类型为Connection 和User,返回类型为ResultSet的方法。

package com.dao;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import com.vo.User;public interface UserDao {        public ResultSet find(Connection conn,User user)throws SQLException;}

定义DAO实现类即UserDaoImpl.java
方法功能:根据传入的数据进行查询,并返回查询结果。

package com.dao.impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.dao.UserDao;import com.vo.User;public class UserDaoImpl implements UserDao{    @Override    public ResultSet find(Connection conn, User user) throws SQLException {        PreparedStatement ps=conn.                prepareStatement("select * from tbl_user where name=?and password=?");        ps.setString(1, user.getName());        ps.setString(2, user.getPassword());        return ps.executeQuery();    }}

定义CheckUserService.java
连接数据库,并且定义判断方法。如果查询结果有值就说明原本数据库中的存在该对应的账号与密码,验证通过,否则验证失败。

package com.service;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import com.dao.UserDao;import com.dao.impl.UserDaoImpl;import com.vo.User;public class CheckUserService {    private UserDao oneuser=new UserDaoImpl();    public boolean check(User user){        Connection conn=null;        try {            Class.forName("com.mysql.jdbc.Driver");            conn=DriverManager.getConnection("jdbc:mysql:"                    + "//localhost:3306/mvc_db","root","");            ResultSet rs=oneuser.find(conn, user);//得到查询结果            while(rs.next()){                return true;            }        } catch (Exception e) {            e.printStackTrace();        }finally{            try {                conn.close();            } catch (SQLException e) {                e.printStackTrace();            }        }        return false;    }}

控制层(Servlet):CheckServlet.java
接收数据,查询,判断。根据判断结果跳转至相应页面。

package com.servlet;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.service.CheckUserService;import com.vo.User;public class CheckServlet extends HttpServlet {    private CheckUserService cus=new CheckUserService();    public CheckServlet() {        super();    }    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doPost(request, response);    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String usn=request.getParameter("userName");        String psw=request.getParameter("passWord");        RequestDispatcher rd=null;        String forward=null;        if(usn==null||psw==null){            rd=request.getRequestDispatcher("/01/error.jsp");            rd.forward(request, response);        }else{            User user=new User();            user.setName(usn);            user.setPassword(psw);            boolean bl=cus.check(user);            if(bl){                forward="/01/success.jsp";            }else{                forward="/01/error.jsp";            }            rd=request.getRequestDispatcher(forward);            rd.forward(request, response);        }    }}

web.xml配置

   <servlet>    <servlet-name>CheckServlet</servlet-name>    <servlet-class>com.servlet.CheckServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>CheckServlet</servlet-name>    <url-pattern>/check</url-pattern>  </servlet-mapping>

显示层(JSP):
login.jsp

<body>    <form action="<%=request.getContextPath()%>/check" method="post">        用户名:<input type="text" name="userName"><br>        密    码:<input  type="password" name="passWord"><br>        <input type="submit" value="登录">        <input type="reset" value="重置">    </form></body>

success.jsp

<body>登陆成功!<br>用户名:<%=request.getParameter("userName")%><br><a href="01/login.jsp">返回登录页面</a></body>

error.jsp

<body>登陆失败!<br>用户名或密码错误<br><a href="01/login.jsp">重新登录</a></body>
0 0
原创粉丝点击