--Request-登录案例

1、先创建好目录:

/**一定要注意:当我们使用tomcat时lib包是需要放在web-INF中。
*其实想明白很简单,如果我们不启动Tomcat,那么只需要把包添加到java环境的路径下即可
* (就是我们常用的add path),这样,java程序就可以使用这个包中的类,但是,javaweb
* 是运行在Tomcat下的,我们导的包,必须让Tomcat找到,而tomcat应用服务器,它有其自
* 己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的路径去找相应的lib
* 下的jar文件。也就是说Tomcat默认的路径就是WEB_INF这个目录下的lib,如果我们不
* 放在这里,就会找不到依赖,也就是常有情况使用c:表达式报错。
*
*/

2、创建登录页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/Web11/login" method="post">
    <input name="username"><br>
    <input name="password"><br>
    <input type="submit" value="登录">
</form>
</body>
</html>

3、 创建一个JavaBean对象:

package com.sise.JavaBean;

public class User {
    private int id;
    private String username;
    private String password;
    private String address;

    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 String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

4、运用数据库连接池,编写工具类,导入jar包,导入mysql包,导入Spring包(因为需要用到Template),写配置文件

package com.sise.Jdbc;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCUtils {
    private static DataSource ds;

    static {
        try {
            InputStream ras = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            Properties properties = new Properties();
            properties.load(ras);
            ds = DruidDataSourceFactory.createDataSource(properties);
        } catch (IOException e) {
            e.printStackTrace();
        }catch (Exception e) {
            e.printStackTrace();
        }


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

    public static DataSource getDataSource(){
        return ds;
    }
}
# druid.properties文件的配置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/webtest
username=root
password=root
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大超时时间
maxWait=3000

5、编写登录代码,也就是template的运用:

package com.sise.Dao;

import com.sise.JavaBean.User;
import com.sise.Jdbc.JDBCUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
import java.util.List;
import java.util.Map;

public class LoginDao {

      DataSource ds=JDBCUtils.getDataSource();
      private  JdbcTemplate jdbct=new JdbcTemplate(ds);


    public  User select(User user){//快捷键ctrl+alt+t
        try {
            String sql="select * from t_user where username=? and password=?";
            User query = jdbct.queryForObject(sql
                    , new BeanPropertyRowMapper<User>(User.class),user.getUsername(),user.getPassword());
            return query;
        } catch (DataAccessException e) {
            e.printStackTrace();//记录异常
            return null;//如果查询不到user,则返回null
        }
    }
    /**一定要注意:当我们使用tomcat时lib包是需要放在web-INF中。
     *其实想明白很简单,如果我们不启动Tomcat,那么只需要把包添加到java环境的路径下即可
     * (就是我们常用的add path),这样,java程序就可以使用这个包中的类,但是,javaweb
     * 是运行在Tomcat下的,我们导的包,必须让Tomcat找到,而tomcat应用服务器,它有其自
     * 己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的路径去找相应的lib
     * 下的jar文件。也就是说Tomcat默认的路径就是WEB_INF这个目录下的lib,如果我们不
     * 放在这里,就会找不到依赖,也就是常有情况使用c:表达式报错。
     *
     */
}

6、编写Servlet继承HttpServlet:

package com.sise.Servlet;

import com.sise.Dao.LoginDao;
import com.sise.JavaBean.User;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/login")
public class ServletImpl extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        User user=new User();
        user.setUsername(username);
        user.setPassword(password);
        LoginDao ld=new LoginDao();
        User user1 = ld.select(user);
        if (user1!=null){
            System.out.println("登录成功,欢迎您");
            req.setAttribute("user",user1);
            req.getRequestDispatcher("/success").forward(req,resp);
        }else {
            RequestDispatcher requestDispatcher = req.getRequestDispatcher("/false");
            requestDispatcher.forward(req,resp);
        }

    }
}

7、资源内部跳转的其他资源代码:

package com.sise.Servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/false")
public class ServletImpl2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().write("登录失败");

    }
}

package com.sise.Servlet;

import com.sise.JavaBean.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/success")
public class ServletImpl3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        User user = (User) req.getAttribute("user");//强制类型转换
        if (user!=null) {
            resp.setContentType("text/html;charset=utf-8");
            resp.getWriter().write(user.getUsername()+"登录成功");
        }

    }
}

8、设置好数据库:

9、运行:

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值