Servlet技术入门
发布日期:2021-05-08 02:59:14 浏览次数:14 分类:原创文章

本文共 4132 字,大约阅读时间需要 13 分钟。

文章目录

一、什么是Servlet

  • 1、Servlet是JavaEE规范之一,规范就是接口。
  • 2、Servlet是JavaWeb三大组件之一。

三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。

  • 3、Servlet是运行在服务器上的一个java小程序,它可以接受客户端发送过来的请求,并响应数据给客户端。

二、如何使用Servlet

  • 继承HttpServlet实现Servlet程序
  • 并需要在xml里面配置映射

三、HTTP协议

  • 客户端->服务器叫请求
  • 服务器->客户端叫响应
* 常用的响应码:* 200   表示请求成功* 302   表示请求重定向* 404   表示请求服务器已经收到了,但是数据不存在(请求地址错误)* 500   表示服务器已经收到请求,但是服务器内部错误(代码错误)* 常用请求头:* Accept: 表示客户端可以接受的数据类型* Accept-Languege: 表示客户端可以接受的语言类型* User-Agent: 表示客户端浏览器的信息* Host: 表示请求时的服务器ip和端口号

请求又分为get请求和post请求:

  • get 请求用来从服务器上获取资源
  • post 请求通常是用来向服务器提交数据的
    在这里插入图片描述

四、Servlet下的类

4.1 HttpServletRequest类

  • 每次只要请求进入Tomcat服务器,它就会把请求过来的Http协议信息解析好封装到Request对象中。
  • 然后传递到Service方法(doGet和doPost)中给我们使用。
		System.out.println("servlet01的get方法");        //getRequestURI()   获取请求的资源路径        System.out.println("URI->" + request.getRequestURI());        //getRequestURL()   获取请求的统一资源定位符(绝对路径)        System.out.println("URL->" + request.getRequestURL());        //getRemoteHost()   获取客户端ip地址        System.out.println("客户端 ip地址:" + request.getRemoteHost());        //getHeader()       获取请求头        System.out.println("请求头User-Agent:" + request.getHeader("User-Agent"));        //getMethod()       获取请求的方式GET或POST        System.out.println("请求的方式:"  + request.getMethod());

用户登陆传参数值

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>    <form action="/JavaWeb01/Servlet01" method="get">        用户名:<input type="text" name="username"><br/>        密码:<input type="password" name="password"><br/>        爱好:<input type="checkbox"  name = "hobby" value="sing">唱歌        <input type="checkbox" name = "hobby" value="dance">跳舞        <input type="checkbox" name="hobby" value = "play">和cxk一起打篮球        <input type="submit" value="登陆">    </form></body></html>
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {   		//设置req对象的解码方式		req.setCharacterEncoding("UTF-8");        //获取请求参数        String username = req.getParameter("username");        String password = req.getParameter("password");        String[] hobby = req.getParameterValues("hobby");        System.out.println("用户名:" + username);        System.out.println("密码:" + password);        System.out.println("爱好:" + Arrays.asList(hobby));        for(int i = 0; i < hobby.length; i ++ ){               System.out.println(hobby[i]);        }    }

请求转发

  • 请求转发指的是服务器收到请求后,从一个资源跳转到另一个资源的操作。
------------servlet02---------------------protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {           resp.setContentType("text/html;charset=utf-8");        req.setAttribute("dog","leigou");        //dispatcher调度        RequestDispatcher rd = req.getRequestDispatcher("/Servlet03");        rd.forward(req,resp);    }------------servlet03---------------------protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {           PrintWriter out = resp.getWriter();        String dog = (String) req.getAttribute("dog");        if(dog != null) out.println(dog);    }

Web下的路径

* 在web中/斜杠是一种绝对路径* 如果被浏览器解析,得到的地址是:http://ip:port/*                <a href="/"></a>* 如果被服务器解析,得到的地址是:http://ip:port/工程路径* Redirect:使改方向* 特殊的:response.sendRediect("/") :http://ip:port/

4.2 HttpServletResponse类

  • 上面一样,每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用,HttpServletRequest表示请求的信息,HttpServletResponse表示所有响应的信息。

两个响应流:

* 字节流 getOutputStream()     常用与下载(传递二进制数据)* 字符流 getWriter()           常用于回传字符串(常用)* 两个流同时只能使用一个!//在客户端上打印helloPrintWriter out = resp.getWriter();out.write("hello");

服务器和客户端字符编码集的设置

//设置服务器字符集为UTF-8resp.setCharacterEncoding("UTF-8");//通过响应头,设置浏览器使用UTF-8字符集resp.setHeader("Content-Type","text/html;charset=UTF-8");//默认ISO-8859-1//同时设置服务器和客户端都是用UTF-8字符集,还设置了响应头resp.setContentType("text/html;charset=utf-8");System.out.println(resp.getCharacterEncoding());PrintWriter out = resp.getWriter();out.write("磊是真狗");

请求重定向

  • 请求重定向:
    客户端给服务器发请求,然后服务器给客户端一个新地址去访问(可能旧地址已经被抛弃了emm)
  • 第一种方法:
//设置响应状态码302,表示重定向resp.setStatus(302);//设置响应头,说明新地址在哪resp.setHeader("Location","/JavaWeb01/Servlet03");

-第二种方法:

resp.sendRedirect("/JavaWeb01/Servlet03");
上一篇:Filter的入门
下一篇:jsp技术入门

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月08日 18时50分30秒