
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");
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月08日 18时50分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Threading Programming Guide(多线程编程指南)
2021-05-08
Java求逆波兰表达式的结果(栈)
2021-05-08
SDWebImage--http图片加载不出来的问题
2021-05-08
Application received signal SIGSEGV
2021-05-08
MySQL删除数据库时的错误(errno: 39)
2021-05-08
Win10 JDK配置环境变量以及为什么需要配置每部分的原因
2021-05-08
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
2021-05-08
SLAM学习笔记-求解视觉SLAM问题
2021-05-08
普歌-允异团队-HashMap面试题
2021-05-08
还在一个一个手动安装虚拟机吗?Cobbler自动部署装机一键最小化安装打把游戏就好了
2021-05-08
Windows下Python安装与使用
2021-05-08
程序员应该知道的97件事
2021-05-08
我编程,我快乐—程序员职业规划之道
2021-05-08
create-react-app路由的实现原理
2021-05-08
PSI值
2021-05-08
海思Hi3531DV100开发环境搭建
2021-05-08
JavaScript上传下载文件
2021-05-08
Linux驱动开发之PCIe Host驱动
2021-05-08
Vue.js Element Basic组件使用
2021-05-08
android 头像选择,裁剪全套解决方案,你值得拥有!
2021-05-08