初识 struts2-为什么我访问不了 WEB-INF 下面的 jsp 页面

当我刚开始学 struts2 框架时,我们在学校是有这个课的,我们用的教材是 《轻量级JavaEE 企业应用实战》,这是 李刚 编写的疯狂系列中一本,这本书很厚,我们老师也差不多是讲这上面的内容。当我照着书上的教程学时,遇到了一个问题,就是我访问不了 WEB-INF 下面的 jsp页面

一般来说,如果不用 struts2 框架的话,本身是访问不了 WEB-INF 下面的所有的内容的,因为这个文件下面一般存放的是 一些配置文件和一些库文件,而这些文件是不能让用户直接访问到的。

但是如果你使用了 struts2 框架的话,是可以将 jsp页面 存放在 WEB-INF这个目录下面的(struts 官方还推荐将页面放置于这个目录下面)。下面是我 struts.xml 配置文件中的代码:




    
        
            /WEB-INF/{1}.jsp
        
    
    

下面上一张我的目录结构图:

初识 struts2-为什么我访问不了 WEB-INF 下面的 jsp 页面_第1张图片
01.png

大家可以看到我在 WEB-INF 的目录下面放了三个jsp文件,在 WebContent 的直接子目录下也放了同样的三个文件(这三个文件与WEB-INF 同级),但是其中的内容不同,以便我们到时知道自己访问的是哪一个文件。

  • 现在如果我在 WEB-INF 下的jsp 页面右键单击 run as的话,那么出来的页面是 404页面,显示这个页面是没有找到的。而且大家可以看到下面图中红线部分,这就是我们这个 jsp页面的访问路径。
初识 struts2-为什么我访问不了 WEB-INF 下面的 jsp 页面_第2张图片
02.jpg
  • 而如果我们右键点击运行与 WEB-INF 同级的jsp页面,那么可以得到页面,如下图,可以看到图中红色部分的访问地址。
初识 struts2-为什么我访问不了 WEB-INF 下面的 jsp 页面_第3张图片
03.jpg

那么通过以上我们首先可以得出我们项目中的jsp页面在本地访问的地址是怎样的 http://localhost:8080/ + 项目名称 + jsp页面在WebContent 路径(不包括WebContent)


再看一下我们在 struts.xml 中的配置:


            /WEB-INF/pages/loginForm.jsp

之前我理解的是 可以拦截到所有的请求,从而跳转到 /WEB-INF/pages/loginForm.jsp, 通过实践才知道在 web.xml 中的

struts2
/*

以上才能拦截到所有的请求,然后拦截到所有请求以后,就交给一系列的拦截器开始处理,而能拦截的只是以.action结尾的jsp页面,比如 loginForm.action 页面,也能拦截到表单中action="loginForm" ,所以我猜测是不是表单就是以 XXX.action的方式被提交给后台的。


但是如果你把浏览器中的地址改为 http://localhost:8080/login2/WEB-INF/pages/loginForm.action 那么你还是不能访问到 WEB-INF 下的页面,这是因为用户访问不了 WEB-INF 下的页面,但是我们如果在浏览器中随便输入,比如 http://localhost:8080/login2/XXX/loginForm.action,那么我们就可以访问到 WEB-INF 下的页面了,可以看出在程序内部对http://localhost:8080/login2/WEB-INF/这个目录进行了处理,如果用户的路径包含的话,就直接跳转到 404.


以下是其中的一些知识点:

1.web.xml当程序启动时,会自动读取其中的配置。
2.WEB-INF下存放的是 一些配置文件和一些库文件(包)。
3.struts.xmlstruts框架的核心配置文件,可以在其中配置一些拦截器等。
4.用户是不能直接访问WEB-INF 下的文件的。
5.用户可以通过配置 action来让框架将 WEB-INF的页面显示出来。

你可能感兴趣的:(初识 struts2-为什么我访问不了 WEB-INF 下面的 jsp 页面)