Web核心-HTTP简介
1.HttpServlet使用步骤
继承HttpServlet类,实现HttpServlet接口的doGet()和doPost()
根据请求方式的不同,进行分别的处理
2.Servlet urlPattern(访问路径) :
1.一个Servlet可以配置多个访问路径
2.urlPattern配置规则
①精确匹配 @webServlet(urlPattern ="/user/select")
②目录匹配 webServlet(urlPattern ="/user/*")
③扩展名匹配: webServlet(*.do)
④任意匹配 / 或/* 注意:/会覆盖默认tomcat默认Servlet配置,导致无法访问静态资源
3.Request继承体系
ServletRequest (java提供的请求对象根接口)<-HttpServletRequestjava(提供的对http协议封装的请求对象接口)<-RequestFacade(tomcat定义的实现类)、
4.Request获取请求数据
1.请求行: GET/request-demo/req1?username=zhangsan HTTP/1.1
2.请求头: User-Agent:Mozilla/5.0 chrome/91.0.4472.106
3.请求体: username=superbaby&password=123
5.Request通用方式获取请求参数
在doPost方法调用doGet方法,前提是统一获取请求参数的方式,从而统一doPost和doGet方法的代码
Map<String,String[]> getParameterMap():获取所有参数Map集合
String[] getParameterValues(String name):根据名称获取参数值(数组)
String getParameter(String name):根据获取参数值(单个值 )
6.请求转发(forward):一种在服务器内部的资源跳转方式
实现方式:req.getRequestDispatcher("资源B路径").forward(req,resp);
请求转发资源间共享数据:使用Request对象
使用步骤:A先存储数据,再转发,B获取数据
特点:浏览器地址路径不发生变化,只能转发到当前服务器的内部资源,一次请求,可以在转发资源间使用Request共享数据
7.Response设置响应数据功能介绍&完成重定向&响应字符数据&响应字节数据
①Response设置响应数据功能介绍
响应数据分为3部分:
1.响应行:HTTP/1.1 200 OK void setStatus(int sc):设置响应状态码
2.响应头:Content-Type:text/html void setHeader(String name,String value):设置响应头键值对
3.响应体:<html><head>head<body></body></html> PrintWriter getWriter();获取字符输出流 ServletOutputStream getOutputStream():获取字节输出流
②Response 完成重定向(Redirect)
实现方式:resp.setStatus(302); 状态码302表示服务器响应的网页位置和请求者请求的网页位置不同
resp.setHeader("location","资源B的路径");
一行代码简单实现重定向:response.sendRedirect("资源B的路径");
特点:浏览器地址发生变化 可以重定向到任何位置的资源,无论是内部还是外部 两次请求,不能在多个项目中共享数据
③资源路径问题
明确路径给谁使用,判断是否需要加虚拟目录(项目访问路径)
浏览器使用:需要加虚拟目录
服务器使用:不需要加虚拟目录
动态获取虚拟目录:String contextPath = request.getContextPath();
重定向代码: reponse.sendRedirect(contextPath+"/resp2");
④Response响应字符数据
1.通过response对象获取字符流 PrintWriter writer = response.getWriter(); 2.写数据
注意:默认编码iso-8859-1,显示中文乱码,需要setContentType,charset=utf-8
⑤Response响应字节数据
1.通过response对象获取字节输出流 ServletOutputStream outputStream = resp.getOutputStream(); 2.写数据 outputStream.write(字节数据);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现