客户端访问WEB-INF下面的jsp页面

本文介绍了一种通过创建Servlet来实现对/web-INF及其子目录的安全访问的方法,避免这些目录被未授权访问,确保源代码安全。同时提供了具体的实现代码及访问示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、作用

    对于/web-INF/及其子目录,不允许直接的公共访问,所以就可以起到保护这些代码未经授权的访问和窥视,更好的保护了源代码。

    写一个servlet,作为客户端的跳转。

二、代码

package com.cxhd.nurse.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "RouteSerlvet", urlPatterns = {"/route/*"})
public class RouteSerlvet extends HttpServlet{
	
	protected void processRequest(HttpServletRequest request, HttpServletResponse response) {
		String url = request.getRequestURL().toString();
		int p = url.indexOf("/route/");
		
		String path = "/WEB-INF/page/"+url.substring(p+7)+"?"+request.getQueryString();
		try {
			request.getRequestDispatcher(path).forward(request, response);
		} catch (ServletException | IOException e) {
			e.printStackTrace();
		};
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
}

三、url

    对于WEB-INF下面的page/common/clerk/clerk_manage.jsp,可以输入http://localhost:8080/nurse/route/common/clerk/clerk_manage.jsp访问

<think>好的,我现在需要解决用户的问题:如何在JSP应用的web.xml中将首页设置为位于WEB-INF目录下的某个JSP页面。首先,我得回忆一下WEB-INF目录的作用和相关配置方法。 根据用户提供的引用内容,WEB-INF是一个安全目录,外部无法直接访问其中的文件,必须通过配置web.xml来映射。用户提到WEB-INF下的JSP文件不能通过URL直接访问,需要Servlet或其他Java类转发。这说明直接设置欢迎页面WEB-INF里的JSP可能不可行,但可以通过Servlet或控制器进行跳转。 首先,我需要检查web.xml中欢迎文件列表的设置。通常,欢迎页面是在<welcome-file-list>中指定,比如index.jsp。但WEB-INF内的文件无法直接作为欢迎文件,因为客户端请求无法直接访问该路径。因此,可能需要一个中间步骤,比如通过Servlet或Filter来转发请求。 接下来,用户可能需要配置一个Servlet来处理根路径的请求,然后转发到WEB-INF下的JSP页面。例如,在web.xml中定义一个Servlet,将其映射到“/”,然后在Servlet的doGet方法中使用RequestDispatcher转发到具体的JSP路径,如“/WEB-INF/home.jsp”。 另外,考虑到用户使用的是JSP,可能没有使用框架,所以直接使用Servlet进行转发是可行的。同时,需要确保web.xml中的配置正确,比如Servlet的声明和映射,以及欢迎文件列表的设置是否需要调整。 还需要注意,直接设置<welcome-file>为WEB-INF内的文件可能不起作用,因为容器不会将欢迎文件解析到WEB-INF目录下。所以必须通过控制器跳转。例如,将欢迎文件设为某个Servlet路径,再由该Servlet转发到目标JSP。 最后,需要验证配置是否正确,比如部署应用后访问根URL是否成功跳转到目标页面,同时确保没有直接暴露WEB-INF下的JSP路径,以符合安全要求。</think>要在JSP应用中配置web.xml将首页指向WEB-INF目录下的JSP页面,需按以下步骤操作: ### 步骤1:理解WEB-INF目录特性 WEB-INF目录下的文件无法通过浏览器直接访问,必须通过Servlet或控制器进行请求转发[^2]。因此不能直接设置`<welcome-file>`为WEB-INF内的路径。 ### 步骤2:配置web.xml 在web.xml中添加欢迎文件配置和Servlet映射: ```xml <!-- 设置默认跳转路径 --> <welcome-file-list> <welcome-file>index</welcome-file> </welcome-file-list> <!-- 声明处理根路径的Servlet --> <servlet> <servlet-name>HomeController</servlet-name> <servlet-class>com.example.HomeServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HomeController</servlet-name> <url-pattern>/index</url-pattern> </servlet-mapping> ``` ### 步骤3:创建Servlet跳转逻辑 在Servlet中实现转发到WEB-INF下的JSP: ```java public class HomeServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/WEB-INF/home.jsp").forward(request, response); } } ``` ### 步骤4:验证路径安全 通过这种方式访问时,浏览器地址栏仍显示`/index`,而实际内容来自受保护的`/WEB-INF/home.jsp`,符合Java Web应用安全规范[^4]。 ### 补充说明 若使用Spring MVC等框架,可更简洁地配置视图解析器: ```xml <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> ``` 此时控制器直接返回视图名即可自动定位到WEB-INF下的JSP文件[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值