c语言sscanf函数的用法是什么
250
2022-11-23
Servlet2
Servlet2
1.HttpServletRequest类
a)HttpServletRequest类有什么作用。b)HttpServletRequest类的常用方法c) 如何获取请求参数d) POST请求的中文乱码解决e) 请求的转发f) base 标签的作用g) Web中的相对路径和绝对路径h) web 中 / 斜杠的不同意义
2. HttpServletResponse类
a)HttpServletResponse类的作用b)两个输出流的说明。c) 如何往客户端回传数据d)响应的乱码解决e) 请求重定向
1.HttpServletRequest类
a)HttpServletRequest类有什么作用。
每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中。 然后传递到service方法(doGet和doPost)中给我们使用。我们可以通过HttpSerdetRequest对象,获取到所有请求的信息。
b)HttpServletRequest类的常用方法
i. getRequestURI() 获取请求的资源路径 ii. getRequestURL() 获取请求的统一资源定位符(绝对路径) iii. getRemoteHost() 获取客户端的ip地址 iv. getHeader() 获取请求头 v. getParameter() 获取请求的参数 vi. getParameterValues() 获取请求的参数(多个值的时候使用) vii. getMethod() 获取请求的方式GET或POST viii. setAttribute(key, value);设置域数据 ix. getAttribute(key); 获取域数据 x. getRequestDispatcher() 获取请求转发对象
c) 如何获取请求参数
d) POST请求的中文乱码解决
演示
创建web模块07_servlet
创建Tomcat实例
application context:07_servlet
创建包和类
RequestAPIServlet
package com.servlet;import javax.servlet.ServletException;import javax.servlet.javax.servlet.javax.servlet.java.io.IOException;public class RequestAPIServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// i. getRequestURI() 获取请求的资源路径 System.out.println("URI =>"+req.getRequestURI());// ii. getRequestURL() 获取请求的统一资源定位符(绝对路径) System.out.println("URL =>"+req.getRequestURL());// iii. getRemoteHost() 获取客户端的ip地址 /** * 在IDEA中,使用localhost访问时,得到的客户端ip地址是===>>>0:0:0:0:0:0:0:1 * 在IDEA中,使用127.0.0.1访问时,得到的客户端ip地址是===>>>127.0.0.1 * 在IDEA中,使用 真实ip 访问时,得到的客户端ip地址是===>>>真实的客户端ip */ System.out.println("客户端 ip地址"+req.getRemoteHost());// iv. getHeader() 获取请求头 System.out.println("请求头User-Agent==>>"+req.getHeader("User-Agent"));// vii. getMethod() 获取请求的方式GET或POST System.out.println("请求的方式===>>"+req.getMethod()); }}
ParameterServlet
package com.servlet;import javax.servlet.ServletException;import javax.servlet.javax.servlet.javax.servlet.java.io.IOException;public class RequestAPIServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// i. getRequestURI() 获取请求的资源路径 System.out.println("URI =>"+req.getRequestURI());// ii. getRequestURL() 获取请求的统一资源定位符(绝对路径) System.out.println("URL =>"+req.getRequestURL());// iii. getRemoteHost() 获取客户端的ip地址 /** * 在IDEA中,使用localhost访问时,得到的客户端ip地址是===>>>0:0:0:0:0:0:0:1 * 在IDEA中,使用127.0.0.1访问时,得到的客户端ip地址是===>>>127.0.0.1 * 在IDEA中,使用 真实ip 访问时,得到的客户端ip地址是===>>>真实的客户端ip */ System.out.println("客户端 ip地址"+req.getRemoteHost());// iv. getHeader() 获取请求头 System.out.println("请求头User-Agent==>>"+req.getHeader("User-Agent"));// vii. getMethod() 获取请求的方式GET或POST System.out.println("请求的方式===>>"+req.getMethod()); }}
form.html
web.xml
e) 请求的转发
什么是请求的转发?
请求转发是指,服务器收到请求后,从一次资源跳转到另一个服务器资源的操作叫请求转发。
代码
Servlet1
package com.servlet;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.javax.servlet.javax.servlet.java.io.IOException;public class Servlet1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取请求的参数(办事的材料) String username = req.getParameter("username"); System.out.println("在Servlet1(柜台1)中查看参数(材料)"+username); //改材料盖一个章,并传递到Servlet2(柜台2)去查看 req.setAttribute("key1","柜台1的章"); //问路:Servlet2(柜台2)怎么走 /** * 请求转发必须要以斜杠打头,/ 斜杠表示地址为: */ RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2"); //走向Servlet2(柜台2) requestDispatcher.forward(req,resp); }}
Servlet2
package com.servlet;import javax.servlet.ServletException;import javax.servlet.javax.servlet.javax.servlet.java.io.IOException;public class Servlet2 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取请求的参数(办事的材料) String username = req.getParameter("username"); System.out.println("在Servlet1(柜台1)中查看参数(材料)"+username); //查看 柜台1 是否有盖章 Object key1 = req.getAttribute("key1"); System.out.println("柜台1 是否有盖章:"+key1); //处理自己的业务 System.out.println("Servlet2处理自己的业务"); }}
web.xml
f) base 标签的作用
演示 在web下创建a/b/c.htmlc.html
在web下创建index.htmlindex.html
在web.xml配置
g) Web中的相对路径和绝对路径
在javaWeb中,路径分为相对路径和绝对路径两种: 相对路径是:. 表示当前目录. . 表示上一级目录 资源名 表示当前目录/资源名 绝对路径: htp://ip:port/工程路径/资源路径
h) web 中 / 斜杠的不同意义
在web中 / 斜杠是一种绝对路径。 /斜杠如果被浏览器解析,得到的地址是href="/">斜杠
/斜杠如果被服务器解析,得到的地址是:servletContext.getRealPath("/");3、 request.getRequestDispatcher("/");
特殊情况:
response. sendRedict("/");
把斜杠发送给浏览器解析。得到HttpServletResponse类
a)HttpServletResponse类的作用
HttpServetResponse类和HtpServletRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象传 递给Servlet程序去使用。HttpServletRequest表示请求过来的信息,HttpServletResponse表示所有响应的信息, 我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象来进行设置
b)两个输出流的说明。
字节流 getOutputstream(); 常用于下载(传递二进制数据)
字符流 getWriter(); 常用于回传字符串(常用)
两个流同时只能使用一个。
使用了字节流,就不能再使用字符流,反之亦然,否则就会报错。
c) 如何往客户端回传数据
d)响应的乱码解决
要求:往客户端回传数据
package com.servlet;import javax.servlet.ServletException;import javax.servlet.javax.servlet.javax.servlet.java.io.IOException;import java.io.PrintWriter;public class ResponseIOServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 要求:往客户端回传 字符串 数据。// resp.getWriter();// resp.getOutputStream(); //响应的乱码解决方案一(不推荐)// System.out.println(resp.getCharacterEncoding());//默认ISO-8859-1// //设置服务器字符集UTF-8// resp.setCharacterEncoding("UTF-8");// //通过响应头,设置浏览器也使用UTF-8字符集//默认GBK// resp.setHeader("Content-Type","test/html;charset=UTf-8"); //响应的乱码解决方案二(推荐) //它会同时设置服务器和客户端都使用UTF-8字符集,还设置了响应头 //此方法一定要在获取流对象之前才有效 resp.setContentType("test/html;charset=UTF-8"); System.out.println(resp.getCharacterEncoding()); PrintWriter writer = resp.getWriter();// writer.write("response's context"); writer.write("我很帅"); }}
e) 请求重定向
请求重定向,是指客户端给服务器放请求,然后服务器告诉客户端说。我给你一个新地址。你去新地址访问。叫请求重定向(因为之前的地址可能已经被废弃)。
代码演示Response1
package com.servlet;import javax.servlet.ServletException;import javax.servlet.javax.servlet.javax.servlet.java.io.IOException;public class Response1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("曾到此一游 Response1"); //请求重定向实现方案一// //设置响应状态码302,表示重定向,(已搬迁)// resp.setStatus(302);// //设置响应头,说明新地址在哪里// resp.setHeader("Location"," //请求重定向实现方案二(推荐) resp.sendRedirect(" }}
Response2
package com.servlet;import javax.servlet.ServletException;import javax.servlet.javax.servlet.javax.servlet.java.io.IOException;public class Response2 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("response2'result"); }}
web.xml
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~