Servlet学习记录

个人认为servlet属于一种控制程序,可以处理浏览器的请求并做出对应的回应。我们经常使用的是让一个类去继承HttpServlet,然后在doget或者dopost里面写东西。

目前我个人常在doget里面写,但是不明白为什么dopost里面必须要写一个this.dopost。

接下来主要的就是request和response:

  request就是请求的意思,也就是你的服务器去请求浏览器的东西,我们以一个表单为例。当我们做好了一个表单,然后配置好提交参数,假如我们现在这个表单用于登录验证,我们需要在后台获取到客户在浏览器输入的东西,我们在代码里面就可以用request.getParameter()等方法去获取表单提交的信息。这样我们就可以在后台进行验证了。后台可以进行SQL操作,之后进行比对,这样就完成了一个简单的登录验证。可以看看这个例子。

package cn.itcast.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 javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/loginServlet")
public class Loginservlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String checkCode = request.getParameter("checkCode");
        //先获取生成的验证码

        
        HttpSession session = request.getSession();
        String checkCode_session =(String) session.getAttribute("checkCode_session");
        //判断验证码是否正确
        if (checkCode_session.equalsIgnoreCase(checkCode)) {
            //忽略大小写比较
            //判断用户名
            if ("zhangsan".equals(username) && "123".equals(password)) {//需要调用UserDao查询数据库
                //登陆成功
                session.setAttribute("user", username);
                // 重定向到success.jsp
                response.sendRedirect(request.getContextPath() + "/success.jsp");
            } else {
                request.setAttribute("login_error", "用户名或密码错误");
                //存储信息,用户信息
                request.getRequestDispatcher("/login.jsp").forward(request,response);

            }

        }
        else{
            //验证错误 返回错误信息
            //存储错误信息到req
            request.setAttribute("cc_error","验证码错误");
            //转发到登陆页面
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

  

  response是回复的意思。是你服务器对浏览器的回复。目前感觉用的并不多哈哈哈。就举两个例子吧。更多的是用于设置。

   String mimeType = servletContext.getMimeType(filename);
        response.setHeader("content-type",mimeType);
//            2.3.2 设置响应头打开方式L:content-disposition
        response.setHeader("content-disposition","attachment;filename="+filename);
        //3 将输入流的数据写出到输出流中。

  

//简单的重定向
        resp.sendRedirect("/day15/responseDemo2");
 //简单的形式来设置编码(上面两个功能一起实现)
        resp.setContentType("text/html;charset=utf-8");

  

 

 

posted @ 2021-12-02 13:00  skywxp  阅读(32)  评论(0)    收藏  举报