request的讲解(简单的登录校验)

今天应该算javaweb开始的第一天课程,主要讲了一些http的协议以及request的一些API。开始之前先吐槽一波,今天换的这个老师真的慢,说活慢,还喜欢拖课,十二点半下课,拖到十二点五十。
不啰嗦了,画个重点,一次请求对应一次响应!!!(记住)
开始之前再讲些小的知识点:
乱码问题:
在servlet中,
get请求无需自己设置编码,tomcat已经解决了,并且服务器默认的method为get
post请求需要手动设置编码 reques.setCharacterEncoding(“utf-8”);

request

request是一个域对象
生命周期:何时创建,何时销毁?
请求到达服务器时tomcat创建request对象,服务器完成该次响应,对象销毁。
那么生命周期的意义在于哪呢?
在转发的时候才能体现出来,自己设置,获取,删除当然没有什么意义。具体的还是上代码吧!
什么叫请求转发呢?
访问AServlet—自己完成不了–(将这次请求与响应转发给B)-BServlet—给出响应。
getRequestDispatcher(path).forward(request,response);
请求转发的特点?(差点忘了说,明天和response的区别还是很重要的)

1.一次请求一次响应
2.地址栏没变
3.服务器的内部行为

下面不多说,直接在代码上讲解吧。果然核心知识点还是靠代码,什么框架图根本用不上(哈哈,当然一下基本的知识点还是比较可靠的,本人初级码农,暂时要求会用就好~)

代码的目录结构:
request的讲解(简单的登录校验)_第1张图片
需求分析:用户输入登录名,密码。后台通过servlet校验是否输入正确。如果输入正确,则转发给success.html ,如果输入错误,则转发给error.html。还有关于Cookie的知识点,简单来说就是记住用户名和密码。(先预习了,哈哈!具体Cookie的内容后面再说?可是作者觉得Cookie的用处暂时就这点了吧,到时候看情况~)
代码逻辑:
1.先创建User.java(注意,成员变量名要与数据库中的一样!!!)
2.再写UserDao.java 查询数据库
3.写LoginService.java 处理业务逻辑
4.写LoginServlet2 处理登录业务
5.Utils是个工具类,这里放的是连接数据库的工具类,具体代码就不附上了

//User类 定义javabean
public class User {
    //javabean
    private int id;
    private String username;
    private String password;
    //set,get方法,以及toString方法
}
//UserDao类 查询数据库
public class UserDao {
    private JdbcTemplate jdbcTemplate = new JdbcTemplate(DataSourceUtil.getDataSource());
    //连接数据库代码,处理数据库代码
    public User queryByUsernameAndPassword(String username,String password){
        //通过用户名和密码判断数据库中是否存在该用户,若存在,返回User对象;若不存在,则返回null
        String sql ="select * from user where username =? and password =?";
        try {
            return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class),username,password);
        } catch (DataAccessException e) {
            return null;
        }
    }
}
//LoginService类  处理业务逻辑
public class LoginService {
    //处理登录的业务逻辑
    public boolean login(String username,String password){
        UserDao userDao = new UserDao();
        User user = userDao.queryByUsernameAndPassword(username, password);
        //如果登陆成功,则返回true
        if (user!=null){
            return true;
        }else{
            return false;
        }
    }
}
//LoginServlet类
//采用的是注解开发
@WebServlet(urlPatterns = "/loginServlet2")
public class LoginServlet2 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //servlet处理请求
        //设置编码值,避免乱码
        request.setCharacterEncoding("utf-8");
        LoginService loginService = new LoginService();
        //获取username ,password
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String rememberMe = request.getParameter("rememberMe");
        //获取rememberMe的值,若勾选,则设置usernameCookie 和usernameCookie
        boolean flag = loginService.login(username, password);

        if(flag){
            if("remember-me".equals(rememberMe)){
                Cookie usernameCookie = new Cookie("name", username);
                Cookie passwordCookie = new Cookie("password", password);
                //将cookie的内容发给浏览器保存
                response.addCookie(usernameCookie);
                response.addCookie(passwordCookie);
            }
            request.getRequestDispatcher("/success.html").forward(request,response );
        }else{
            request.getRequestDispatcher("/error.html").forward(request,response );
        }
    }
}

核心代码以及完成了,如果需要整个项目的话,可以私信我哦~(一个好的登录页面不容易!)
附图一张!
request的讲解(简单的登录校验)_第2张图片

你可能感兴趣的:(javaweb)