【JavaEE常见问题】frame框架中如何引入WEB-INF中的jsp页面

本文介绍如何在WEB-INF目录下配置多个JSP文件,并通过frame框架标签进行整合展示。主要涉及web.xml中的servlet配置及main.jsp中的frameset布局。

我们知道,WEB-INF中的文件,不能通过网页链接直接跳转

一般情况下都是经过后台跳转,但frame框架标签中如何使用?

比如下图


在main.jsp中引入上面三个jsp文件,这就需要在web.xml文件里配置一下

web.xml

<servlet>
		<servlet-name>top</servlet-name>
		<jsp-file>/WEB-INF/main_top.jsp</jsp-file>
	</servlet>
	<servlet>
		<servlet-name>left</servlet-name>
		<jsp-file>/WEB-INF/main_left.jsp</jsp-file>
	</servlet>
	<servlet>
		<servlet-name>content</servlet-name>
		<jsp-file>/WEB-INF/main_content.jsp</jsp-file>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>top</servlet-name>
		<url-pattern>/top</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>left</servlet-name>
		<url-pattern>/left</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>content</servlet-name>
		<url-pattern>/content</url-pattern>
	</servlet-mapping>

jsp代码

<frameset rows="20%,*" border="1px" bordercolor="black">
		
		<frame noresize="noresize"  src="./top" scrolling="no" />
		
		<frameset cols="20%,*" border="1px" bordercolor="black">
		
			<frame noresize="noresize"  src="./left" scrolling="no" />
		
			<frame noresize="noresize"  src="./content" name="mycontent" />
		
		</frameset>

结果




### Maven 项目中 WEB-INF 目录的作用及配置 #### 1. WEB-INF 目录的作用 在 Maven 项目中,`WEB-INF` 目录用于存放 Web 应用程序的核心资源和配置文件。这些资源对外部客户端不可直接访问,从而确保了应用程序的安全性和封装性[^2]。 - **web.xml**:作为 Web 应用程序的部署描述符,定义了 Servlet、过滤器、监听器以及其他相关配置信息。 - **classes**:存放编译后的 Java 类文件,包括 Servlet、控制器以及其他业务逻辑类。 - **lib**:存放 Web 应用程序所需的第三方 JAR 文件,这些文件会被打包到最终的 WAR 文件中并加载到类路径中。 #### 2. 配置方式 在 Maven 项目中,`WEB-INF` 的配置可以通过以下方式完成: - **目录结构**:Maven 约定 `src/main/webapp/WEB-INF` 是存放 Web 应用程序核心资源的标准位置。如果项目中未自动生成该目录,可以手动创建,并确保其符合 Maven 的目录结构规范。 - **web.xml 示例**: ```xml <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>exampleServlet</servlet-name> <servlet-class>com.example.ExampleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>exampleServlet</servlet-name> <url-pattern>/example</url-pattern> </servlet-mapping> </web-app> ``` 上述代码片段定义了一个名为 `exampleServlet` 的 Servlet,并将其映射到 `/example` 路径[^2]。 - **Maven 构建**:当使用 Maven 构建项目时,`WEB-INF/classes` 和 `WEB-INF/lib` 中的内容会被自动打包到生成的 WAR 文件中。如果需要包含额外的依赖,可以在 `pom.xml` 中进行配置,例如: ```xml <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> ``` #### 3. 注意事项 - 如果发现 `WEB-INF/classes` 缺失编译后的类文件,可以通过修改项目的输出路径来解决。具体操作为进入 `File -> Project Structure -> Modules`,选择目标模块并点击 `Paths`,将输出路径更改为 `WebRoot/WEB-INF/classes`[^2]。 - 在 Maven 项目中,建议避免手动复制 JAR 文件到 `WEB-INF/lib`,而是通过 `pom.xml` 管理依赖,以确保构建过程的自动化和一致性。 #### 4. 安全性与限制 `WEB-INF` 目录中的所有资源无法通过浏览器直接访问。即使这些资源位于 Web 根目录下,客户端也无法通过 URL 访问它们。这种设计确保了应用程序的内部实现细节不会暴露给外部用户。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值