- 浏览: 333546 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
y_715:
document.getElementById("e ...
JSTL EC TABLE extremeTable 学习 -
wangyj0898:
学习了。。。
display table 标签用法 -
hejiajie2008:
没有图啊
图解myeclipse把maven普通java项目变成web项目的全程操作 -
zhangyu_2100:
[align=center][/align][color=br ...
request.getRealPath()的替代方法 -
senhui19:
LZ写的真不错呀,现在开发中都经常是用DetachedCrit ...
Hibernate的Criteria用法总结
本人在看《J2EE核心模式》(“Core J2ee Patterns”,刘天北、熊节译),里面提到了一种实现资源保护的方法,那就是把那些限制访问的资源(比如说jsp源代码)放到Web应用的WEB-INF目录下,对于/web-INF/及其子目录,不允许直接的公共访问,所以就可以起到保护这些代码未经授权的访问和窥视,更好的保护了源代码(19页)。
这么书只是对这种方法进行了简单的介绍,没有描述详细处理方法,我测试了一下,没有办法对放到/WEB-INF的文件进行访问,所以我就上网搜索了一下,才明白了具体的处理方法,感觉非常适合用在STRUTS结构上的系统。下面请听我详细说明。
通常JSP开发人员会把他们的页面文件存放在Web应用相应的子目录下。一个典型的商店应用程序的目录结构如图2所示。跟catalog (商品目录)相关的JSP被保存在catalog子目录下。跟customer相关的JSP,跟订单相关的JSP等都按照这种方法存放。
图 2.基于不同的功能 JSP 被放置在不同的目录下
这种方法的问题是这些页面文件容易被偷看到源代码,或被直接调用。某些场合下这可能不是个大问题,可是在特定情形中却可能构成安全隐患。用户可以绕过Struts的controller直接调用JSP同样也是个问题。
为了减少风险,可以把这些页面文件移到WEB-INF 目录下。基于Servlet的声明,WEB-INF不作为Web应用的公共文档树的一部分。因此,WEB-INF 目录下的资源不是为客户直接服务的。我们仍然可以使用WEB-INF目录下的JSP页面来提供视图给客户,客户却不能直接请求访问JSP。
采用前面的例子,图3显示将JSP页面移到WEB-INF 目录下后的目录结构
图 3. JSP存放在 WEB-INF 目录下更为安全
如果把这些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就会显示“跳转成功!”这条信息,这表示系统允许这样的跳转。
发表评论
-
智力题
2010-08-27 10:56 1819A说:是B偷吃的,B说:是D偷吃的。C说;我没有偷吃。D说:B ... -
experience
2009-12-28 12:05 11991.报错信息 servlet-mapping配置的问题200 ... -
JDBC高级应用二
2009-12-28 11:33 1025JDBC高级应用(二)本来想继续谈JDBC的高级连结方式,事务 ... -
在JAVA文件中获取该项目的相对路径
2009-11-12 14:36 14461.基本概念的理解 绝对路径:绝对路径就是你的主页上的文 ... -
明明白白Unsupported major.minor version 49.0的错误
2009-10-26 17:19 998一:要解决的问题 我们在尝鲜 JDK1.5 的时候,相信不少人 ... -
log4j详解
2009-09-02 13:04 898log4j.properties 使用 一.参数意义说明 输出 ... -
java 文件读取 路径问题
2009-08-25 15:23 15521.如何获得当前文件路径 常用: 字符串类型:System ... -
图解myeclipse把maven普通java项目变成web项目的全程操作
2009-08-05 20:06 3979图解myeclipse把maven普通java项目变成web项 ... -
浅谈java输入输出流(二)
2009-07-09 18:05 2434导读: stream代表的是任何有能力产出数据的数据源,或 ... -
浅谈java输入输出流(一)
2009-07-09 18:01 3171Java语言的输入输出功能是十分强大而灵活的,美中不足 ... -
常用Java开源库(新手必看)
2008-12-15 12:46 1795Jakarta common: Commons Logging ... -
浅谈Java内部类的四个应用场景
2008-12-15 12:44 959Java内部类是Java言语的一个很重要的概念,《Java编程 ... -
使用 HttpClient 和 HtmlParser 实现简易爬虫
2008-12-02 20:51 1456这篇文章介绍了 HtmlParse ... -
htmlparser使用指南
2008-11-28 13:10 2046转载:http://www.yeeach.com/2008/0 ... -
file的getPath getAbsolutePath和getCanonicalPath的不同
2008-09-16 09:12 1119file的这几个取得path的 ... -
JAVA使用winrar解压缩和解带有密码的压缩包的一个类
2008-09-05 13:38 2750通过使用winrar这个工具对文件进行操作。唯一 ... -
window.event的属性
2008-08-07 18:03 1670<script language="JavaS ... -
十个习惯让你精通新的开发技术(转)
2008-05-29 17:44 1077这篇文章,是从我的《 ... -
java汉字转换为拼音
2008-05-09 17:14 2079import java.util.Iterator;impor ... -
关于VO、PO的理解-java的(PO,VO,TO,BO,DAO,POJO)解释
2008-03-30 17:00 1647O/R Mapping 是 Object Relational ...
相关推荐
- **功能**: 存放源代码文件,虽然不是必须的,但在开发过程中有时会被使用到。 **5. WEB-INF/database.properties 文件** - **用途**: 存储数据库连接配置信息,例如 JDBC 驱动、URL、用户名和密码等。 - **示例...
大家都喜欢把配置文件放在src目录下,如果有10个以上的配置文件为什么不考虑在WEB-INF目录下新建一个文件夹,专门放配置文件;这样即好管理,文件安全性又高。亲问题已经解决,把源代码共享给大家,已经通过测试;...
在JSP中,`web-inf`目录是一个特殊目录,它是Web应用的标准结构的一部分。根据Java Servlet规范,`WEB-INF`目录包含不直接对外公开的文件,如Servlet类、配置文件以及库(JAR文件)。这个目录下的文件不能通过URL...
在Java Web应用程序中,WEB-INF目录是一个非常重要的组成部分,它包含了一些对用户不可见的敏感资源,如Web应用的配置文件(web.xml)、类文件(通过编译的Java源代码)以及库(JAR文件)。这个目录的设计目的是为了...
把JSP放到WEB-INF后以保护JSP源代码 22 使用 Prebuilt Action类提升开发效率 23 Struts标记库 25 定制JSP标记 25 资源束 26 Bean标记 27 Bean复制标记 27 定义脚本变量的标记 28 显示Bean属性 29 消息标记...
- **把JSP放到WEB-INF后以保护JSP源代码**:提高了代码的安全性和可维护性。 - **使用PrebuiltAction类提升开发效率**:提供了预构建的Action类模板,可以快速实现常用功能。 - **Struts标记库**: - **定制JSP...
【JSP实用教程源代码】是一份详细的编程学习资源,主要涵盖了Java Server Pages(JSP)技术的应用和实践。这份教程由耿祥义编写,旨在帮助开发者深入理解JSP并提高实际开发能力。通过分析和实践这些源代码,学习者...
此部分是指文件夹名为第1~9章中的内容(如表1),这些是书中介绍JSP相关知识的源代码。文件的命名规则与书中相应源代码文件名一致。读者可将相关文件夹(如ch2)拷贝到Tomcat服务器安装目录的子目录webapps下,并...
1.把vote、WEB-INF(vote文件夹存放的是.jsp文件,WEB-INF存放的是该系统使用到的一些.class文件)文件夹上传到你的主机目录。 2.修改DBConnect.java里连接MySQL数据库的IP、用户名和密码为你自己的IP,user, ...
学习JSP开发的典型案例,1.... 如果某些章节中要使用Bean或Servlet或嵌入Applet,那么需将本章下.java文件编译,然后复制到JSP文件所在目录的\WEB-INF\classes目录下,并以章节名如ch4建立文件夹。
总结,这个JSP交友网站源代码涵盖了Web开发中的多个关键知识点,包括前后端交互、数据库操作、用户认证、安全性、性能优化等,对于学习和实践JSP开发具有较高的参考价值。通过对这些技术的深入理解和实践,开发者...
通过研究这个JSP聊天室的源代码,开发者可以学习到如何使用JSP和Servlet进行前后端交互,如何处理HTTP请求,如何设计简单的用户认证系统,以及如何利用Access数据库存储和检索数据。这对于提升Web开发技能,尤其是...
总之,JSP源代码泄露是Web应用安全的一个重要问题,理解和使用"jsp暴源代码工具"可以帮助我们更好地保护Web应用,确保其安全稳定运行。同时,我们也应该了解如何预防和修复源代码泄露,以增强系统的整体安全性。
根据提供的信息,我们可以总结出以下关于“jsp大学教程代码”的相关知识点: ### 一、JSP与Struts框架概述 **JSP (Java Server Pages)** 是一种基于Java技术的服务器端脚本语言,用于创建动态网页。JSP 页面将HTML...
**JSP源代码分析** 1. **示例项目结构**:通常,一个JSP项目包含Web-INF目录、源代码目录、静态资源目录等,源代码文件可能分布在不同的目录下,对应于不同的功能模块。 2. **Servlet映射**:JSP最终会被编译为...
【标题】:“jsp项目---博客网.rar”是一个基于JSP技术构建的博客网站源代码压缩包。这个项目可能包含了实现一个完整的博客系统所需的所有文件,包括但不限于HTML、CSS、JavaScript前端页面,以及JSP、Servlet、...
`spring-boot-starter-web` 提供了基础的 Web 开发功能,而 `spring-boot-starter-tomcat` 则包含了内嵌的 Tomcat 容器,它是运行 JSP 的必要条件。 ```xml <groupId>org.springframework.boot <artifactId>...
【标签】:“jsp项目---图书馆管理系统.rar”标签表明这个压缩包包含了JSP编程语言相关的源代码,特别适用于学习JSP开发、Web应用程序设计或者图书馆信息化管理的学生或专业人士。 【文件名称列表】:由于只给出了...
品红项目作为一个完整的Web应用,其目录结构一般包括了WEB-INF目录,其中包含了web.xml(Web应用的配置文件),lib目录(存放项目所需的JAR库),以及src目录(存放Java源代码,包括Servlet和JSP页面)。此外,还有...
【顺天科技论坛JSP源代码】是一个基于JavaServer Pages(JSP)技术构建的在线讨论平台的源码集合。JSP是Java EE(企业版)框架中的一个重要组成部分,用于开发动态网页应用。通过深入研究这个论坛的源代码,我们可以...