【Servlet】请求的解析
目录
请求的转发
请求的转发是指从一个资源跳转到另一个资源的操作叫做请求的转发
创建两个类servlet1和servlet2继承HttpServlet
Servlet1类下:
servlet2类下:
运行访问http://localhost:8080/03_servlet/servlet1
运行结果:
在访问栏中加入参数 ?后面都是参数
回车得:
请求转发的特点
1、浏览器地址栏没有变化(一直都是工程名/servlet1)
2、他们试一次请求
3、可以共享Request域中的数据(域数据在整个工程都能访问)
4、可以转发到WEB-INF目录下(WEB-INF受服务器保护,不能通过客户端(浏览器)直接访问可以通过服务器中的资源间接访问)
5、不能访问工程以外的资源(因为他是从工程下找的,工程下没有的一律访问不了)
在类Servlet1中
地址访问:
base标签
演示程序不能跳回来的情况
创建一个类ForwardC继承HttpServlet类
在web.xml中配置
在web目录下创建如图所示
在c目录下写
在index.html下写
运行之后:
我们前面也说过,只写到工程名默认访问index页面
我们发现点击上下两个都可以成功跳转
虽然都成功跳转了,但是地址明显不同,因为我们在c.html下写的是../../index.html,
运行结果:
到位分析:
前者(第一个),localhost:8080/03_servlet/a/b/c.html,经过../../跳转可以到web工程下,正好web下有index.html,所以会跳转成功。
后者(第二个 ),localhost:8080/03_servlet/forwardC,经过../../跳转就会跳到src目录下,而src目录下显然没有index.html页面,故会失败。(结构是:src/com/servlet/Forward)
图示:
当我们加入base标签后,浏览器就会以这个base标签的为最终地址。
base标签一般加在title之下
这样就解决了后者不能调到首页的问题。
Web中的相对路径和绝对路径
在javaWeb中,路径分为相对路径和绝对路径两种:
相对路径:
. 表示当前目录
.. 表示上一级目录
资源名 表示当前目录/资源名
绝对路径:
http://ip:port/工程路径/资源路径
web中/ 斜杆的不同意义
在web中/ 斜杆是一种绝对路径。
/ 斜杆如果被浏览器解析,得到的地址是:http://ip:port/
<a href="/">斜杆的意义</a>
/ 斜杆如果被服务器解析,得到的地址是:http://ip:port/工程路径
1、<url-pattern>/servlet1<url-pattern>
2、servletContext.getRealPath("/");
3、request.getRequestDispatcher("/")
特殊情况:response.sendRediect("/");把斜杆发送给浏览器解析,得到http://ip:port/
HttpServletResponse类
HttpServletResponse类的作用
HttpServletResponse类和HttpServRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用,HttpServletRequest表示过来的信息,HttpServletResponse表示所有响应的信息,我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象进行设置
两个输出流的说明
字节流 getOutputStream(); 常用于下载(传递二进制数据)
字符流 getWriter(); 常用于回传字符串(常用)
两个流同时只能使用一个。否则报错
往客户端回传数据
创建一个类ResponIOServlet:
web.xml配置,运行之后:
中文乱码问题
设置 response.setCharacterEncoding("GBK");就可以解决中文在浏览器显示乱码问题
第一种方式:
第二种方式:
第三种方式:
请求重定向
第一种方式
创建两个类response1和response2
response1
response2
web.xml配置 中配置访问路径
运行结果:
请求重定向的特点
1、浏览器地址栏会发生变化
2、是两次请求(第一次是旧的地址,第二次是重新定到新的地址)
3、不能共享Request域中的数据(因为Tomcat会把每次请求封成一个对象,两次请求所以不同对象)
4、不能访问WEB-INF下的资源(因为也是浏览器发送的请求,浏览器不能直接访问WEB-INF)
5、可以访问工程外的资源,如www.baidu.com
第二种方式
- 点赞
- 收藏
- 关注作者
评论(0)