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就会显示“跳转成功!”这条信息,这表示系统允许这样的跳转。
分享到:
相关推荐
总之,在 Eclipse 中开发 Web 应用时,正确理解和使用 `WEB-INF` 和 `META-INF` 文件夹及其内部文件对于项目的构建和部署至关重要。它们不仅帮助开发者更好地组织代码和配置文件,还能够确保应用程序能够正常运行。
JSP文件存放在WEB-INF目录下更为安全。 JSP文件是否需要放在WEB-INF目录下是一个需要根据项目需求和结构来决定的问题。从安全性、可维护性、可读性等多方面考虑,放在WEB-INF目录下可以提高安全性和可维护性,但...
2. **WebRoot目录**:在标准的Java Web应用中,WebRoot目录是指包含所有Web资源的顶级目录,其具体名称可以自定义,但在部署至服务器时通常对应`/WEB-INF`目录的上级目录。例如,在Tomcat服务器中,Web应用被部署在`...
不同点WebRoot和WebContent的主要区别在于它们在Web项目中的用途和在项目构建过程中的角色。 1. WebRoot:在使用MyEclipse进行Web开发时,WebRoot通常指的是项目中包含src源代码目录的部分,它可以包含一些框架支持...
\web\WebRoot\register.jsp D:\web\WebRoot\WebRoot.xml 必须存放在D:\Tomcat5\conf\Catalina\localhost\下 [我的Tomcat 安装目录是:D:\Tomcat5] D:\web\WebRoot\说明.Txt <br>D:\web\WebRoot\imags\bg....
在WebRoot目录下,可能存在其他子目录,比如WEB-INF/lib目录中存放了项目依赖的第三方库文件,WEB-INF/classes目录存放了编译后的class文件,WEB-INF/pages存放JSP页面等。这些结构对于理解Web应用的部署和运行机制...
3. **web.xml**:在"WEB-INF"目录下,web.xml是Web应用的部署描述符,定义了应用的配置信息,如Servlet的映射、过滤器、监听器等。它是应用配置的中心文件,对理解应用的工作方式至关重要。 4. **Servlet**:...
<fileset dir="WebRoot/WEB-INF/lib"> *.jar"/> <!-- 可能还需要添加J2EE标准库 --> ${j2ee5.dir}"> *.jar"/> ``` 这里需要注意的是,我们需要定义一个属性`j2ee5.dir`来指定J2EE标准库的位置。这个路径...
* 确认文件是否存放在正确的目录下,避免引用META-INF 或 WEB-INF 文件夹下的内容。 4. Tomcat 服务器中 web.xml 中的问题 如果您的 Web 应用程序有多个 JSP 页面,在点击虚拟根目录时可能会出现 404 错误。 排错...
2、修改totgb/WEB-INF/classes目录下的log4j.properties文件中log4j.appender.file.File为你的log文件存放目录。 3、安装数据库:mysql -u root -p 存放目录\install\totgb.sql 3、修改数据库的连接参数;打开totgb/...
【标题】"WebRoot.rar" 是一个压缩文件,通常在Web开发中,WebRoot是Web应用程序的根目录,存放着所有公开访问的Web资源,如HTML、CSS、JavaScript文件以及Servlet类等。这个RAR文件可能包含了某个Web项目的结构和...
一、安装简要说明 1、安装JDK1.4.2以上版本(注意配置java_home路径) ...\WEB-INF\src:MeyboMail Web开源简化版的java源代码。 \WEB-INF\easyjweb:系统动态页面模板。 \WEB-INF\lib:系统的支持库文件。
例如,在Eclipse中,检查Project的Properties,MyEclipse,Web,Web Context-root,检查这个路径名称是否书写正确。最后,检查一下文件名称是否书写正确。 二、URL输入错误 解决方法:排查URL的书写是否正确,查看...
- 页面资源文件(如CSS, JS, 图片等)应放在webroot目录下,因为WEB-INF目录下的资源无法通过URL直接访问。 - 页面放在WEB-INF目录下可以限制访问,提高安全性,但需要通过转向(forward)而非重定向(redirect)来...
2、修改totgb/WEB-INF/classes目录下的log4j.properties文件中log4j.appender.file.File为你的log文件存放目录。 3、安装数据库:mysql -u root -p 存放目录\install\totgb.sql 3、修改数据库的连接参数;打开totgb/...
- JSP碎片:`.jspf` - `<context root>/<subsystem path>/` 或 `<context root>/WEB-INF/jspf/<subsystem path>/` - CSS样式表:`.css` - `<context root>/css/` - JavaScript文件:`.js` - `<context root>/js/` - ...
在项目的WebRoot目录下,通常包含以下几个关键部分: 1. **JSP文件**:这些文件是用户与应用程序交互的主要界面,它们结合了HTML、CSS和JS,以及嵌入的Java代码。例如,登录、注册、商品展示等页面都是通过JSP实现...
通常在`WebRoot`下的`WEB-INF`之外,例如`WebRoot/css`, `WebRoot/js`, `WebRoot/images`。 2. **JSP(JavaServer Pages)**:动态页面,通常用于生成HTML内容。例如,`WebRoot/WEB-INF/jsp`目录下可能包含各种JSP...
5. "WEB-INF\lib\org.springframework.asm-3.1.1.RELEASE.jar"是一个包含在WEB-INF/lib目录下的JAR包,这是Java Web应用的标准目录结构,用来存放Web应用的库文件,而此处的asm库是一个Java字节码操作和分析框架。...
Apache Tomcat是一个流行的开源Web应用服务器,它是Apache软件基金会Jakarta项目的一部分,专门用于运行Java Servlet和JavaServer Pages (JSP)。Tomcat5.5是该系列的一个版本,尽管现在已经较旧,但它仍然是初学者和...