`
jackroomage
  • 浏览: 1197893 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

WebRoot和WEB-INF下存放JSP页面的区别

    博客分类:
  • j2ee
 
阅读更多

WebRoot和WEB-INF下存放JSP页面的区别

 

 

JSP存放在 WEB-INF 跟webroot的区别

    放在webroot下面:优点,程序结构清晰,便于编码和维护;缺点,要加过滤器。
放在web-inf下面:优点,不用过滤器;缺点,打乱了程序结构,编码和维护麻烦点。

    webroot其实是一个名字而已,在部署后是看不到的,访问的时候在url里肯定也是没有的,当然webroot也可以换成别webcontent等都可以。
    如果把这些JSP页面文件移到WEB-INF 目录下,在调用页面的时候就必须把"WEB-INF"添加到URL中。

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

例1:/test/test1.jsp文件

<html>

  <body>

    <form name="testform" action="/WEB-INF/jsp/test/test.jsp">

      <input type = "submit" value="test">

    </form>

  </body>

</html>

    上面这段语句只有一个名为test的按钮,如果单击这个按钮是,系统就会跳转到/WEB-INF/jsp/test/test.jsp,它的代码如下:

例2:/WEB-INF/jsp/test/test.jsp文件

<html>

<body>

跳转成功!

</body>

</html>

事实上,这个跳转是无法成功的,点击按钮后,IE会报“403 Forbidden”的错误。


而forward方式的跳转则可以成功,如下代码:

例3:/test/test2.jsp文件

<html>

<body>

<form name="testform">

<jsp:forward page = "/WEB-INF/jsp/test/test.jsp" />

 

</form>

</body>

</html>

    请注意上面红色的语句,这段就是通过forward的形式来访问/WEB-INF/jsp/test/test.jsp文件,在IE输入地址http://localhost/test1/test2.jsp,网页上就显示“跳转成功!”的信息了,这表示放到了WEB-INF可以通过forward的方式来访问。


    个人认为,像这种方式的可能不大时候采用一般jsp进行编程的系统,因为很多页面上都有采用submit这样的方式来进行跳转,但这种方式却非常适合采用 struts结构的系统。因为采用这个结果大多是先跳转到一个Action类,然后在Action类进行相关处理后(比如说获取相关的信息保存到 session中,进行有效性的判断),然后再forward到另外一个页面,这样放到WEB-INF中的jsp代码可以被正常访问,也防止了对这些页面 的直接访问,下面我来举例说明。

    下面我们先对配置文件struts-config.xml进行配置,如下:

例4:WEB-INF/struts-config.xml文件

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

<!-- ========== Action Mapping Definitions ============================== -->

  <action-mappings>

      <action path="/test"type=" test.TestAction" scope="request">

           <forward name="test" path="/WEB-INF/jsp/test/test.jsp"/>

     </action>

  </action-mappings>

</struts-config>

    上面这个配置非常简单,请看红色部分,这里定义了一个action类,它的路径为/test,所对应的类为test.TestAction.java,它都一个跳转页面,别名为test,对应的页面为/WEB-INF/jsp/test/test.jsp。

    下面我们对例1的内容进行修改,使其跳转到/test去。

例5:修改后的/test/test1.jsp文件

<html>

  <body>

    <form name="testform" action="/test">

      <input type = "submit" value="test">

    </form>

  </body>

</html>

    这样我们在IE中访问http://localhost/test/test1.jsp,然后点击test按钮,页面就会跳转到test.TestAction.java这个类来,下面是这个类的内容。

package test;
import javax.servlet.http.*;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;


public class TestAction extends Action

{

  public ActionForward perform(ActionMapping mapping,ActionForm form, HttpServletRequest req,

                                 HttpServletResponse res)

    {

      return mapping.findForward("test");

    }


}

    可以看到,这个类是继承Action类的,所有的控制类都必须继承Action类,这个类里面有一个perform方法,跳转到这个类都是从这个方法进行 访问的(新版本可以是execute方法),现在这个方法里面只有一条语句,这句话的意思就是跳转到一个别名为test的页面,也就是/WEB-INF /jsp/test/test.jsp页面,这样我们点击test按钮后,IE就会显示“跳转成功!”这条信息,这表示系统允许这样的跳转。

分享到:
评论

相关推荐

    mysql+连接池+JavaBean实现用户注册登陆系统

    \web\WebRoot\register.jsp D:\web\WebRoot\WebRoot.xml 必须存放在D:\Tomcat5\conf\Catalina\localhost\下 [我的Tomcat 安装目录是:D:\Tomcat5] D:\web\WebRoot\说明.Txt &lt;br&gt;D:\web\WebRoot\imags\bg....

    基于jsp的通讯录系统

    2、修改totgb/WEB-INF/classes目录下的log4j.properties文件中log4j.appender.file.File为你的log文件存放目录。 3、安装数据库:mysql -u root -p 存放目录\install\totgb.sql 3、修改数据库的连接参数;打开totgb/...

    Ajax经典案例开发大全

    webapp 目录存放实例页面及JSP源文件 -------------- 数据库安装说明 -------------- 了解MySQL的用户可以直接使用自己熟悉的方式创建名为ajax的数据库,并将ajax.sql文件导入即可。 下面是简要操作方法: 1. ...

    Ajax经典源码实例大全

    webapp 目录存放实例页面及JSP源文件 -------------- 数据库安装说明 -------------- 了解MySQL的用户可以直接使用自己熟悉的方式创建名为ajax的数据库,并将ajax.sql文件导入即可。 下面是简要操作方法: 1. ...

    ajax经典示例代码

    webapp 目录存放实例页面及JSP源文件 -------------- 数据库安装说明 -------------- 了解MySQL的用户可以直接使用自己熟悉的方式创建名为ajax的数据库,并将ajax.sql文件导入即可。 下面是简要操作方法: 1. ...

    Ajax经典实例大全

    webapp 目录存放实例页面及JSP源文件 -------------- 数据库安装说明 -------------- 了解MySQL的用户可以直接使用自己熟悉的方式创建名为ajax的数据库,并将ajax.sql文件导入即可。 下面是简要操作方法: 1. ...

    淘特JSP留言板 v0.1

    2、修改totgb/WEB-INF/classes目录下的log4j.properties文件中log4j.appender.file.File为你的log文件存放目录。 3、安装数据库:mysql -u root -p 存放目录\install\totgb.sql 3、修改数据库的连接参数;打开totgb/...

    jsp连接池成功之例

    文件mysql-connector-java-5.0.5-bin.jar 存放于 D:\web\WebRoot\WEB-INF\Lib\下,最好在也存一个在 D:\Tomcat5\common\lib\下 &lt;br&gt;6. 我所有配置都没有设计到tomcat的server.xml,有的人在这个文件中做...

    Tomcat下发布JSP程序的N种方法

    JSP网站的发布最灵活的一种方式我们可以在Tomcat的conf目录下的的Servlet.xml文件中进行配置 在其Host标签内新建一个Context标签来部置一个JSP应用程序,如果在这里部置后,那我们就不需要再把 你的作品拿到...

    MeyboMail Web(Java) 邮件 群发源代码

    一、安装简要说明 1、安装JDK1.4.2以上版本(注意配置java_home路径) 2、安装tomcat 3、把本下载的全部程序文件拷贝到tomcat的webapps\ROOT...\WEB-INF\easyjweb:系统动态页面模板。 \WEB-INF\lib:系统的支持库文件。

    ajax经典实例+代码大全

    webapp 目录存放实例页面及JSP源文件 -------------- 数据库安装说明 -------------- 了解MySQL的用户可以直接使用自己熟悉的方式创建名为ajax的数据库,并将ajax.sql文件导入即可。 下面是简要操作方法: 1. ...

    《Oracle JavaEE编程指南》01-04:第一个Web应用

    深入了解IT/互联网行业及岗位,请参阅通用IT/互联网岗位招聘计划(最新全岗版)。 深入了解职业晋升及学习路线,请参阅最优职业...WebRoot/WEB-INF:这是一个非常重要的目录,主要放置web.xml配置文件,不要把JSP等文

    超市管理系统

    /WEB-INF/admin(存放jsp) (3)jsp:建议放在WEB-INF下 html-》jsp:后缀名+page头部声明 jsp中的资源引用: 绝对路径: ①${pageContext.request.contextPath }/css/style.css 或者 ②()%&gt; ③${...

    cms后台管理

    4.把服务器下install\config下的web.xml复制出来覆盖掉新建项目WEB-INF下的web.xml 5.classes下有四个文件,手动烤到myeclipse项目src根目录下中 6.将服务器上jeecms项目删掉,发布新建的jeecms项目。 三 首页的...

    ant1.9资源

    Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。 一. 安装与配置 下载地址:...

    如何重写继承HttpServlet的类

    webapp是存放各种图片、视频等jsp资源的根路径,标记为Resources Root(浏览器可以直接访问,如果存放在WEB-INF中是需要间接访问的) 3、在创建好的包下建类:LoginController 4、在 mvnrepository.com网站中搜索...

    springmybatis

    &lt;property name="username" value="root"/&gt; 3. 建立与数据库对应的 java class,以及映射文件. 在src_user下建立package:com.yihaomen.mybatis.model ,并在这个 package 下建立 User 类: 程序...

    office在线查看

    清理完之后,新建readFile.jsp(jsp页面代码在后面附加),然后将flexpaper文件夹拷贝到WebRoot下即可。 FileConverterUtil.java代码如下: package com.sdjt.util; import java.io.BufferedReader; import java.io....

Global site tag (gtag.js) - Google Analytics