日期:2014-05-17  浏览次数:20737 次

最近学习servlet、jsp开发系统,有些问题想请教各位牛人
我最近在用jsp、servlet做开发,有几个问题想问下各位牛人,
问题1:
我知道请求转发和请求重定向的区别,但我想问下在实际开发中什么时候用请求重定向,什么时候用请求转发?
问题2:
我想问下,在实际开发中,要访问一个jsp一定要先跳转到一个servlet然后再跳到jsp吗?
问题3:
jsp页面应该放到WEB-INF下,以保护不让外界直接访问吗?

------解决方案--------------------
问题1:
我的理解是,转发是客户端跳转,重定向是服务器端跳转。一般使用重定向,这样比较安全。
问题2:
一般在MVC开发模式中,都是jsp提交到servlet,然后servlet调用业务层的类,业务层把数据返回给servlet,然后再从servlet跳转到jsp,展示结果内容。如果a.jsp中并没有和业务层打交道,而是直接想跳到b.jsp,那么就没有必要通过servlet中转了,可以直接跳转
问题3:
对,jsp页面文件放在web-inf下比较安全
------解决方案--------------------
问题1:
(我说的比较白一点)重定向和请求转发理论上的区别是在于:
重定向是重新发一个请求:response.sendRedirect(location)
请求转发是接着上一个请求继续走下去:request.getRequestDispatcher(path).forward(arg0, arg1)
最大的区别在于:我们有时候会把一些返回到表现层的的变量放到request中(也就是request.setAttribute(name, o)) 当你用重定向时你会发现你获取不到存在request中的信息,而请求转发可以!因为它是接着上一个请求走的,所以你在上一个请求放在request中的值是可以获取到的
一般请求转发用的比较多,因为我们一般会把东西放在request当中而不是session中!当然啦看个人习惯了。

问题2:
这个没有规定!但是处于一些安全,权限过滤,字符过滤等等考虑我们一般会先通过action或servlet(控制层)再到展现层,如果你遵行的是MVC嘛

问题3:
没错,但是一般存放的是一些框架或者是系统的配置文件!如果你要存放页面的话也没问题!