首页 > 代码库 > 关于JSP不能通过浏览器直接访问,要通过servlet跳转,但一个jsp文件里面用<iframe>标签包含了另一个jsp的访问问题

关于JSP不能通过浏览器直接访问,要通过servlet跳转,但一个jsp文件里面用<iframe>标签包含了另一个jsp的访问问题

  今天在做作业的时候遇到一个问题,以前我们写jsp代码都是放在webcontext 目录下,没有放在其子目录下面的WED-INF目录下面,所有导致浏览器可以直接访问jsp,所以存在安全性问题很大,经过了解,正确的写法是把jsp文件放在WED-INF目录下面,再通过控制器跳转。如果直接浏览器访问这个放在WED-INF目录下面的jsp就会出现404页面,找不到jsp文件。

  1.首先我们来看一下放在WEB-INF目录下面的test1.jsp 是不能直接访问的,放在WebContext下面的是能够直接访问的。如图(1.1,1.2)

    

    

图1.1(jsp文件目录)

图1.2(浏览器直接访问WEB-INF下面的jsp)

图1.3(浏览器直接访问WebContext目录下面的jsp)

  2.但是我们可以通过servlet跳转来访问的test1.jsp。

    下面是servlet代码:

 1 package com.servlet; 2  3 import java.io.IOException; 4 import javax.servlet.ServletException; 5 import javax.servlet.annotation.WebServlet; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 @WebServlet("/TestServlet")11 public class TestServlet extends HttpServlet {12     private static final long serialVersionUID = 1L;13     public TestServlet() {14         super();15     }16     protected void service(HttpServletRequest request,17             HttpServletResponse response) throws ServletException, IOException {18         request.setCharacterEncoding("utf-8");19         response.setContentType("text/html;charset=utf-8");20         request.getRequestDispatcher("/WEB-INF/test1.jsp")21         .forward(request, response);22     }23 24 }
然后就能够访问test1.jsp了



图2.1(通过servlet跳转访问在WEB-INF目录下面的test1.jsp)

3.但是我们有时候会遇到这种情况在jsp里面用<iframe>标签包含另一个jsp要同事访问,但是被包含的那个jsp又不能被浏览器直接访问,所有智能放在web-inf目录下面,但是问题来了,通过servlet跳转只能访问外层jsp,里面被包含的jsp会出现404错误。

                          图3.1(外面jsp层代码包含一个jsp文件)

         图3.2(访问jsp结果被包含的jsp不能被显示出来)
这时就需要我们在web.xml配置一下jsp能够通过服务器端跳转访问,而客户端不能直接访问具体代码如下:
<servlet>   <servlet-name>goto</servlet-name>   <jsp-file>/WEB-INF/jsp/msgs.jsp</jsp-file>  </servlet>  <servlet-mapping>   <servlet-name>goto</servlet-name>   <url-pattern>/msgs</url-pattern>  </servlet-mapping>

然后把iframe 属性src = http://www.mamicode.com/ “msgs”就可以访问了。



  虽然这是个很小的问题,这时我学习jsp时遇到的问题,于是把他记录下来,我觉得还是有收获的,如果有什么错误的地方,本人新手,
希望大家指正,感激不尽!


 

    

 

关于JSP不能通过浏览器直接访问,要通过servlet跳转,但一个jsp文件里面用<iframe>标签包含了另一个jsp的访问问题