首页 > 代码库 > 关于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的访问问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。