当前位置: 首页 > news >正文

手机网站工具/有没有永久免费crm

手机网站工具,有没有永久免费crm,公司网站页面,禁止 wordpress ajax使用RequestDispatche r的 forward()方法转发请求和使用HttpServletResponse的 sendRedirect()方法重定向都可以使页面转到另外一个页面,现在收集一下两者的不同:一.RequestDispatcher.forward()方法forward是服务器请求资源,服务器直接访问目…

使用RequestDispatche r的 forward()方法转发请求和使用HttpServletResponse的 sendRedirect()方法重定向都可以使页面转到另外一个页面,现在收集一下两者的不同:

一.RequestDispatcher.forward()方法

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

服务方(如:servlet)将请求转发到同一个WEB应用程序中另一个Servlet(或:JSP)--第三方 进行处理(该过程浏览器方-客户方并不知道),让这个第三方直接将结果返回给浏览器方。

通常在servlet中使用的代码是:

request.getRequestDispatcher(跳转页面的Url).foward(request,response);

如何得到RequestDispatcher

有三种方法可以得到Request Dispatcher对象。

1.javax.servlet. ServletRequest的getRequestDispatcher(String path)方法,其中path可以是相对路径,但不能越出当前Servlet上下文。如果path以“/”开头,则解析为相对于当前上下文的根。

2.javax.servlet. ServletContext的getRequestDispatcher(String path)方法,其中path必须以“/”开头,路径相对于当前的Servlet上下文。可以调用ServletContext的getContext(String uripath)得到另一个Servlet上下文,并可以转向到外部上下文的一个服务器资源链接。

3.使用javax.servlet. ServletContext的getNamedDispatcher(String name)得到名为name的一个Web资源,包括Servlet和JSP页面。这个资源的名字在Web应用部署描述文件web.xml中指定。

这三种方法的使用有细微的差别。比如一个应用的配置文件web.xml,其中定义了两个Servlet,名字分别为FirstServlet和SecondServlet,对应的类分别为org.javaresearch. redirecttest.ServletOne和org. javaresearch.redirecttest.ServletTwo。可以在浏览器中通过类似于下面的链接访问:http://localhost:8080/servlet/firstservlet/

使用1中方法,例如在firstservlet可以写入下面的代码:

RequestDispatcher rd = request.getRequestDispatcher("secondservlet");

rd.forward(request, response);

此时控制权将转向到第二个Servlet了。

使用2中的方法,可以从Servlet Context中得到RequestDispatcher代码如下:

RequestDispatcher rd = getServletContext().getRequest

Dispatcher("/servlet/secondservlet");

rd.forward(request, response);

使用3中的方法,从上面的web. xml配置文件可以看到定义了两个Servlet,名字分别为FirstServlet和SecondServlet,所以可以得到命名的Dispatcher:

RequestDispatcher rd = getServletContext().getNamedDispatcher("SecondServlet");

rd.forward(request, response);

这样也可以重定向到SecondServlet了。

二.sendRedirect()方法

response.sendRedirect(跳转页面URL)

就是服务端根据逻辑,发送一个状态码(Location ,状态码320),告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

服务方(如:servlet)直接将目标URL发回浏览器,让浏览器自己自动重新向目标URL发出HTTP请求。

重定向是作为不同请求来看待的。

三.如何选择

RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用Request

Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。

20180711115805823669.png

20180711115806114696.png

PS:

1.在过滤器中用sendRedirect跳到指定的页面,一般都能正常显示,如下所示。

String contextPath = httpServletRequest.getContextPath();

httpServletResponse.sendRedirect(contextPath + "/alert.html");

但在过滤器中用forward跳到指定的页面,由于指定的页面的contextPath和当前请求的contextPath不同,导致跳到指定的页面不能加载页面需要的其它资源文件,如.css、.js、.img等资源。

request.getRequestDispatcher("/error.jsp").forward(httpServletRequest, httpServletResponse);

forward去的页面,需设置base,如下所示:

f2940af480e1b4b65ede0eee02de2ab9.png

request.setCharacterEncoding("utf-8");

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

...

f2940af480e1b4b65ede0eee02de2ab9.png

2.forward传递参数的方法

request.getRequestDispatcher("/test/forward.do?name="+name).forward(httpServletRequest, httpServletResponse);

ForwardController中获取参数

f2940af480e1b4b65ede0eee02de2ab9.png

@RestController

@RequestMapping("test")

public class ForwardController extends AbstractBaseController {

@RequestMapping(value = "/forward.do", method = RequestMethod.POST)

public LimitRspInfo alert(HttpServletRequest request, HttpServletResponse response) {

String name = request.getParameter("name");

...

}

}

http://www.lbrq.cn/news/939025.html

相关文章:

  • 时时彩做号工具网站/域名收录提交入口
  • 福田公司企业文化/湖南seo优化服务
  • 盗号网站怎么做/无锡seo网站管理
  • 自己做的网站访问不了/如何制定会员营销方案
  • 网吧设计公司/杭州百度首页优化
  • 传奇私服网站怎么建设/宁波网站建设团队
  • 做网站编程用什么语言好/网站发布与推广怎么写
  • 建立网站的风险/google网址直接打开
  • 重庆网站制作外包公司/网店推广网站
  • 中小企业网站建设服务公司/关键词优化软件哪家好
  • 网站建设标书范本/百度推广怎么操作
  • 黄岛网站建设公司首选/关键词优化怎么优化
  • 兴安盟建设局网站/新闻20字摘抄大全
  • 羊毛网站建设视频/今日山东新闻头条
  • 做视频网站 版权怎么解决/求购买链接
  • 政府网站建设实施方案/艺人百度指数排行榜
  • 如何自己编写一个程序/百中搜优化
  • 专业建站流程/爱网站关键词挖掘工具
  • 医疗器械网站建设策划书/百度公司排名
  • 门户网站cms系统/百度seo策略
  • 做网站服务器要用多大/网络营销与直播电商专业学什么
  • 求做图的网站/广州从化发布
  • 使用docker部署wordpress/seo站长工具是什么
  • 政府网站新媒体建设方案/网络媒体推广报价
  • 家教网站建设模板/软文代写服务
  • 莱州人社局网站/杭州疫情最新情况
  • 网站文章结构变更怎么做301/成都网站建设系统
  • 网站建设 交易保障/二十个优化
  • win8风格网站css/最好的网络推广方式
  • 品牌注册类别/seo推广主要做什么的
  • MySQL - 索引(B+树)
  • 个人笔记HTML5
  • 【ELasticsearch】节点角色分类与作用解析
  • LeetCode|Day26|191. 位 1 的个数|Python刷题笔记
  • 探索 MyBatis-Plus
  • TDengine 转化函数 TO_UNIXTIMESTAMP 用户手册