从一个登陆界面开始的HttpServlet学习

Servlet:顾名思义,有点类似于Service,当我们需要将前端传来的请求(以下简称为req)进行解析和操作时,我们需要这样一个Servlet接口来替代我们实现规范化操作获取资源(例如操作数据库等等)而HttpServlet是对Servlet的强化子类,在已经实现大部分方法的基础上,我们只需要重写自己的doget和dopost方法即可。
那么问题来了,什么时候实现doget,又什么时候实现dopost方法呢?答案是对请求进行操作时(如获取页面元素)进行doget,而操作数据库时(如dao)进行dopost;
以下是我的代码结构:
在这里插入图片描述
doGet写法:1.设置编码 2.获取页面元素(getParmeter)3。封装请求返回对象 4.调用Dao层的方法 5.跳转successServlet界面或failServlet界面req.getRequestDispatcher("/failServlet").forward(req,resp)(跳转前存储转发req.setAttribute(“user”,user))

@WebServlet("loginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码
        req.setCharacterEncoding("utf-8");
        //获取请求参数
        String name=req.getParameter("username");
        String pwd=req.getParameter("password");

        //封装user对象
        User user=new User();user.setName(name);user.setPwd(pwd);
        //调用Dao
        UserDao dao=new UserDao();User loginUser=dao.login(user);
        if(loginUser==null){
            req.getRequestDispatcher("/failServlet").forward(req,resp);
        }else {
            req.setAttribute("user",loginUser);
            req.getRequestDispatcher("/successServlet").forward(req,resp);
        }
    }

login.html:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="" method="post">
        用户名:<input type="text" name="username"> <br>
        密码:<input type="password" name="password"><br>

        <input type="submit" value="登录">

    </form>
</body>
</html>

doPost写法(successServlet界面)
1.设置编码 2.类型转换 3.打印

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        User user= (User) req.getAttribute("user");
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().write("欢迎"+user.getName()+"访问");
    }

业务需求:创建一个登录界面,登录成功返回成功界面,显示成功,失败返回失败界面,显示失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值