SpringMVC---注意事项

本文探讨了SpringMVC中JSP存放于WEB-INF目录的安全性,以及从定向和转发的区别。JSP在WEB-INF下能防止直接访问,增强应用安全性。同时,分析了转发和重定向在地址栏显示、数据共享、效率和应用场景上的差异。在实际操作中,重定向无法访问WEB-INF目录,而Ajax请求成功后不会自动跳转,需要额外处理。
摘要由CSDN通过智能技术生成

SpringMVC—注意事项

我们的征程是星辰大海,而非人间烟尘

image

为什么JSP存放在 WEB-INF 目录?

1.基于不同的功能 JSP 被放置在不同的目录下

这种方法的问题是这些页面文件容易被偷看到源代码,或被直接调用。某些场合下这可能不是个大问题,可是在特定情形中却可能构成安全隐患。用户可以绕过Struts的controller直接调用JSP同样也是个问题。

为了减少风险,可以把这些页面文件移到WEB-INF 目录下。基于Servlet的声明,WEB-INF不作为Web应用的公共文档树的一部分。因此,WEB-INF 目录下的资源不是为客户直接服务的。我们仍然可以使用WEB-INF目录下的JSP页面来提供视图给客户,客户却不能直接请求访问JSP。

  1. JSP存放在 WEB-INF 目录下更为安全

    如果把这些JSP页面文件移到WEB-INF 目录下,在调用页面的时候就必须把"WEB-INF"添加到URL中。

我们知道,实现页面的跳转有两种方式,一种是通过redirect的方式,一种是通过forward的方式。redirect方式的跳转,系统会在一个新的页面打开要跳转的网页;而forward方式跳转,系统会在原来的页面上打开一个要跳转的网页。所以放到WEB-INF目录下的文件是不允许采用redirect方式的跳转来访问的

从定向和转发的区别

1.从地址栏显示来说

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

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL。

2.从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据。

redirect:不能共享数据。

3.从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块。

redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等。

4.从效率来说

forward:高

redirect:低

流程上的区别
转发流程:

1.由客户端发起一个HTTP请求。
2.服务端ServletA接收到HTTP请求,调用Web应用内部的ServletB,将request请求传递或转发出去。
3.ServletB接收到转发的信息,处理完之后,将传递给ServletA。
4.ServletA就将ServletB的信息响应给服务器。
注意:转发是在服务器内部的发生的,而且是在同一个Web应用下的Servlet之间发生的,对于客户端来说,只有一次请求和响应

重定向流程:

1.有客户端发起HTTP请求
2.服务端接收到请求后,服务端告诉客户端去访问sendRedirect()中的指定的location,并且响应给客户端。
3.客户端接收到服务器的响应后,再次发送HTTP请求(请求的是sendRedirect()中的指定的location)。
4.服务端(和上面说的服务端可以不是同一个)接收到请求后,给出响应。
注意:重定向是客户端经过2次或多次对服务器进行访问的,2次或多次访问的的服务器可以是不一样的
5.重定向不能访问WEB-INF

通过Ajax请求的数据,请求成功,没有跳转

若请求成功,且未跳转。则是由于ajax请求造成

通过Ajax请求的数据返回的是字符串,不会进行跳转。

如果要需要重定向,在Ajax请求的成功回调中执行window.location.assign='w=url'就可以了,或者更改请求方式,改为普通表单提交,路径跳转等。

请求的成功回调中执行window.location.assign=‘w=url’`就可以了,或者更改请求方式,改为普通表单提交,路径跳转等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liknana

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值