JAVA Web 登录案例实现

JAVA Web 登录案例实现

需要了解的知识

  1. Servlet

      Servlet就是一个接口,定义了Java类被浏览器访问到的规则。

  1. ServletContext对象

       代表整个web应用,可以和程序的服务器来通信。

  1. 客户端会话技术:Cookie

客户端会话技术,将数据保存到客户端。

  1. 服务器端会话技术:Session

     服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。

  1. HttpSession

     HttpSession是Servlet三大域对象之一(request、session、application(ServletContext)),它也有Session的方法。

6、JSP

     Java Server Pages: java服务器端页面(原理:本质上是一个Servlet)

  1. MVC开发模式

(1)、M:Model,模型。JavaBean

完成具体的业务操作,如:查询数据库,封装对象。

(2)、V:View,视图。JSP

展示数据

(3)、C:Controller,控制器。Servlet

获取用户的输入。

调用模型。

将数据交给视图进行展示。

简单了解知识后我们来简单分析

  1. 访问登录界面login.jsp.
  2. 使用Druid数据库连接池技术,操作mysql,数据库中user表
  3. 使用JdbcTemplate技术封装JDBC
  4. 用户输入用户名,密码以及验证码。

2.1如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误

2.2如果验证码输入有误,跳转登录页面,提示:验证码错误

2.3 如果全部输入正确,则跳转到主页success.jsp,显示:用户名,欢迎您

简单画图分析

经过简单分析开始上手操作

  1. 写好登录页面(可自己写,可用前端框架,此次前端不是重点)

<div class="container" style="width: 400px;">
    <h3 style="text-align: center;">用户登录</h3>
    <form action="${pageContext.request.contextPath}/loginServlet" method="post">
        <div class="form-group">
            <label for="user">用户名:</label>
            <input type="text" name="username" class="form-control" id="user" placeholder="请输入用户名"/>
        </div>

        <div class="form-group">
            <label for="password">密码:</label>
            <input type="password" name="password" class="form-control" id="password" placeholder="请输入密码"/>
        </div>
        <div class="form-inline">
            <label for="vcode">验证码:</label>
            <input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="请输入验证码" style="width: 120px;"/>
            <a href="javascript:refreshCode();">
                <img src="${pageContext.request.contextPath}/checkCodeServlet" title="看不清点击刷新" id="vcode"/>
            </a>
        </div>
        <hr/>
        <div class="form-group" style="text-align: center;">
            <input class="btn btn btn-primary" type="submit" value="登录">
        </div>
    </form>

 

 

  1. 编写工具类JDBCutils使用Durid连接池

private static DataSource ds ;
static {

   
try {
       
//1.加载配置文件
       
Properties pro = new Properties();
       
//使用ClassLoader加载配置文件,获取字节输入流
       
InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("druid.properties");
        pro.load(is);

       
//2.初始化连接池对象
       
ds = DruidDataSourceFactory.createDataSource(pro);

    }
catch (IOException e) {
        e.printStackTrace();
    }
catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 *
获取连接池对象
 */

public static DataSource getDataSource(){
   
return ds;
}

/**
 *
获取连接Connection对象
 */

public static Connection getConnection() throws SQLException {
   
return  ds.getConnection();
}

 

2.1创建类UserDao,提供login方法,操作数据库中User表的类

public User login(User loginUser){
   
try {
       
//1.编写sql
       
String sql = "select * from user where username = ? and password = ?";
       
//2.调用query方法
       
User user = template.queryForObject(sql,
               
new BeanPropertyRowMapper<User>(User.class),
                loginUser.getUsername(), loginUser.getPassword());


        
return user;
    }
catch (DataAccessException e) {
        e.printStackTrace();
//记录日志
       
return null;
    }

 

  1. 创建LoginServelt类获取用户的输入。MVC中的控制器

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
//设置编码
   
request.setCharacterEncoding("utf-8");
   
//获取数据
    //获取用户填写验证码
   
String verifycode = request.getParameter("verifycode");
   
//验证码校验
   
HttpSession session = request.getSession();
    String checkcode_server = (String) session.getAttribute(
"CHECKCODE_SERVER");
    session.removeAttribute(
"CHECKCODE_SERVER");//确保验证码一次性
   
if(!checkcode_server.equalsIgnoreCase(verifycode)){
       
//验证码不正确
        //提示信息
       
request.setAttribute("login_msg","验证码错误!");
       
//跳转登录页面
       
request.getRequestDispatcher("/login.jsp").forward(request,response);
       
return;
    }
    Map<String, String[]> map = request.getParameterMap();
   
//封装User对象
   
User loginUser = new User();
   
try {
        BeanUtils.populate(loginUser,map);
    }
catch (IllegalAccessException e) {
        e.printStackTrace();
    }
catch (InvocationTargetException e) {
        e.printStackTrace();
    }

    UserDao dao =
new UserDao();
    User user = dao.login(loginUser);
   
//判断是否登录成功
   
if(loginUser != null){
       
//登录成功
        //将用户存入session
       
session.setAttribute("user",loginUser);
       
//跳转页面
       
response.sendRedirect(request.getContextPath()+"/success.jsp");
    }
else{
       
//登录失败
        //提示信息
       
request.setAttribute("login_msg","用户名或密码错误!");
       
//跳转登录页面
       
request.getRequestDispatcher("/login.jsp").forward(request,response);

    }

3.1创建CheckCodeServlet 类来生成验证码。(不用自己写)

 

4、编写完成后启动Tomcat(服务器)测试(数据库中已经设置好账户和密码)。

 

登录成功后

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值