除此之外,break语句还可以退出循环。break语句可以分为无标号退出循环和有标号退出循环两种,下面将详细讲解这两种用法。图3-26 break用在循环嵌套2.有标号退出循环有标号退出循环只能使用在嵌套的循环语句中。......
2023-11-05
尽管HttpServletResponse 对象的sendRedirect()方法和RequestDispatcher 对象的forward()方法都可以让浏览器获得另外一个URL 所指向的资源,但两者的内部运行机制有着很大的区别。下面是请求转发与重定向两种形式的比较(即内部跳转和外部跳转的区别)。
1.请求转发与重定向的资源范围的区别
请求转发只能将请求转发给同一个WEB 应用中的组件;而请求重定向不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL 重定向到其他站点的资源。如果传递给HttpServletResponse对象的sendRedirect()方法的相对URL 以“/”开头,它是相对于整个WEB 站点的根目录;如果创建RequestDispatcher 对象时指定的相对URL 以“/”开头,它是相对于当前WEB 应用程序的根目录。
2.浏览器地址栏显示的URL 的区别
使用请求重定向形式的访问过程结束后,浏览器地址栏中显示的URL 会发生改变(如图3.2 所示),由初始的URL 地址变成重定向的目标URL;而使用请求转发形式的访问过程结束后,浏览器地址栏保持初始的URL 地址不变。
3.资源之间的request 对象和response 对象的区别
请求转发过程中资源之间共享相同的request 对象和response 对象,它们属于同一个访问请求和响应过程;而请求重定向过程中资源之间使用各自的request 对象和response 对象,它们属于两个独立的访问请求和响应过程,比如在例3.2 中不能在另一个Servlet 中获取到前一个Servlet 中设置的message 属性的属性值。
4.工作原理的区别
请求重定向对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL 的访问请求。这个过程好比你的同学小明向你请教一个问题,而你现在比较忙或解决不了,但是你知道小王可以帮他解决这个问题,所以你告诉他小王可以帮他解决,小明收到你的回复之后立即去请教小王,然后小王为小明解答问题。可见,小明一共发出了两个请求和收到了两次回复,小明也知道他的问题是小王解答的。
而请求转发是在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。这个过程好比小明向你请教一个问题,而你解决不了,但是你知道小王可以解决,所以你去请教小王,然后将小王的回复再回复给小明。可见,小明只发出了一个请求和收到了一次回复,他只知道你帮他解决了问题,并不知道你请教了小王。
下面分别给出了sendRedirect()方法和forward()方法的工作原理图。
图3.3 sendRedirect()方法(外部跳转)的工作原理图
图3.3 所示的交互过程如下:(www.chuimin.cn)
(1)浏览器访问Servlet1(发送请求)。
(2)Servlet1 想让Servlet2 为客户端服务,调用sendRedirect()方法,将客户端请求重定向到Servlet2。
(3)浏览器访问Servlet2。
(4)Servlet2 对客户端的请求做出响应。
从图3.3 中的交互过程可以看出,调用sendRedirect()方法实际上是告诉浏览器Servlet2 所在的位置,让浏览器重新访问Servlet2。调用sendRedirect()方法,会在响应中设置Location 响应报头。要注意的是,这个过程对于用户来说是透明的,浏览器会自动完成新的访问。
图3.4 forward()方法(内部跳转)的工作原理图
图3.4 所示的交互过程如下:
(1)浏览器访问Servlet1(发送请求)。
(2)Servlet1 想让Servlet2 对客户端的请求进行响应,于是调用forward()方法,将请求转发给Servlet2 进行处理。
(3)Servlet2 对请求做出响应。
从图3.4 中的交互过程可以看出,调用forward()方法,对浏览器来说是透明的,它并不知道为其服务的Servlet 已经换成了Servlet2,它只知道发出了一个请求,获得了一个响应。
有关Java Web应用开发的文章
除此之外,break语句还可以退出循环。break语句可以分为无标号退出循环和有标号退出循环两种,下面将详细讲解这两种用法。图3-26 break用在循环嵌套2.有标号退出循环有标号退出循环只能使用在嵌套的循环语句中。......
2023-11-05
统一资源定位符也被称为网页地址,是用于完整地描述Internet 上网页和其他资源的地址的一种标识方法。现在它已经被万维网联盟编制为Internet 标准RFC1738 了。例如:其中“http”指使用的协议,“mail.***.com”是服务器名,“80”是端口号,“/a/j/js3/main.jsp”是路径,“?sid=SDeQWJeebVpZIlKECzee”是询问。同样,“80”是超文本传输协议文件的常用端口号,因此一般也不必写明,用户只要键入统一资源定位符的一部分(mail.***.com/a/j/js3/main.jsp?......
2023-11-21
有参数时可以使用
2023-11-21
通用资源标志符是互联网的一个协议要素,可以通过它来定位任何远程或本地的可用资源。URI 的通用格式为:其中协议指的是访问资源使用的协议名称,常见的有http、ftp、mailto、file 等。协议和主机名称或IP 地址间使用半角冒号(:)连接,包含资源路径的冒号后还有两个半角斜杠(//)。主机名称或IP 地址是用于在网络中查找服务器并用于和它建立连接来获取资源。因为在大部分情况下,服务器都会采用协议默认的端口号。......
2023-11-21
例4.1:JSP 版的“Hello World!”。这里建立的JSP 文件就直接存放在WebRoot 文件夹下。图4.2填写JSP 文件名称填写完成之后单击“Finish”关闭窗口,工具将根据填写的文件名及路径,使用模板建立JSP 文件hello.jsp。hello.jsp 文件内容默认为:接下来,就更改使用基本模板建立的JSP 文件hello.jsp,在hello.jsp 的
标签中输出“Hello World!”,代码如下:发布ch05 项目,并启动Eclipse Tomcat 服务器。图4.3JSP 版的“Hello World!”......2023-11-21
在介绍Servlet 层次结构时,列出了javax.servlet 和javax.servlet.http 这两个包包含开发Servlet 需要用到的主要API,并将其进行了分类。在这里将详细介绍这些Servlet 常用API。Servlet API 是一组基于处理客户端和服务器之间请求和响应的Java 语言标准API。例如,HttpServlet 是常用的抽象类,它的HTTP 处理方法是空的。Servlet 接口中的方法见表2.3。Servlet API 提供了Servlet 接口的直接实现,称为GenericServlet。Servlet 可以通过这些类理解客户的请求,将其处理后的内容通过HttpServletResponse 回复到Web 容器。表2.6ServletResponse 接口中常用......
2023-11-21
由于有了Sun 的参与和支持,Tomcat 8 支持最新的Servlet 3.0 和JSP 2.2 规范。Tomcat 部分是Apache 服务器的扩展,当运行Tomcat 时,它是作为一个与Apache 独立的进程单独运行的。当配置正确时,Apache 为HTML 页面服务,而Tomcat 实际上运行JSP 页面和Servlet。图1.4Tomcat 服务器根目录2.目录结构在Tomcat 中发布Java Web 应用程序之前,首先要了解Tomcat 的目录结构。Tomcat的目录结构是由自身的实现决定的,与SUN 公司的Servlet 规范无关。......
2023-11-21
相关推荐