WEB-INF中的jsp跳转方法(一种实现)

知识点:

1.项目为了相对安全,外界不能直接访问我的页面,所以将jsp放入WEB-INF文件加下,这样必须通过servlet跳转进行访问。配置controller实现跳转。


详细:


方法一:

1.本例是在 springMVC + spring +mybatis下实例。


2.添加跳转的controller,进行跳转(包含一级jsp和二级jsp跳转,如果有更多层级,仿照例二添加)

层级表示   在WEB-INF/login.jspWEB-INF/user/login.jsp

package top.lushunde.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
/**
 * @package: top.lushunde.controller 
 * @Title: PageController 
 * @Description: WEB-INF中的jsp跳转
 * @Company: 个人测试
 * @author MrLu
 * @date 2016-11-14 下午12:13:00
 */
@RequestMapping("page")
@Controller
public class PageController {

	/**
	 * @Title: toPage 
	 * @Description: 二级页面跳转,例如 WEB-INF/user/login.jsp
	 * @param: @param pageName1	 例如 user
	 * @param: @param pageName2	例如 login
	 * @param: @return    
	 * @return: ModelAndView   user/login
	 * @throws 
	 * @author MrLu
	 * @Date 2016-11-14 下午12:08:18
	 */
    @RequestMapping(value = "{pageName1}/{pageName2}", method = RequestMethod.GET)
    public ModelAndView toPage(@PathVariable("pageName1") String pageName1,@PathVariable("pageName2") String pageName2) {
    	ModelAndView mv = new ModelAndView(pageName1+"/"+pageName2);
    	return mv;
    }
	
	
    /**
	 * @Title: toPage 
	 * @Description: 一级页面跳转,例如 WEB-INF/logout.jsp
	 * @param: @param pageName1	 例如 logout
	 * @param: @return    
	 * @return: ModelAndView   login
	 * @throws 
	 * @author MrLu
	 * @Date 2016-11-14 下午12:08:18
	 */
    @RequestMapping(value = "{pageName1}", method = RequestMethod.GET)
    public ModelAndView toPage(@PathVariable("pageName1") String pageName1) {
        ModelAndView mv = new ModelAndView(pageName1);
        return mv;
    }
    

}

2.修改springMVC配置文件的页面跳转配置,添加上 WEB-INF 前缀

	<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
	<bean id="viewResolver"	class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>

3.在html或者jsp中请求WEB-inf下的jsp使用

<a href="/lushunde/page/user/login">登陆</a>
	/lushunde  项目名  可以省略,采用相对路径访问,可以使用jsp的内置对象
	/page	controller第一的访问路径
	/user/login	二级域名访问路径


4.返回的页面文件地址     WEB-INF/jsp/user/login.jsp


  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Java Web开发,通常我们会把jsp文件放在WEB-INF目录下,以保证jsp文件的安全性。但是,这样也会导致jsp文件无法直接通过URL访问。如果我们需要在servlet跳转WEB-INF目录下的jsp文件,可以采用以下两种方式: 方式一:使用RequestDispatcher 在servlet,我们可以使用RequestDispatcher对象来跳转WEB-INF目录下的jsp文件,示例代码如下: ```java RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/example.jsp"); dispatcher.forward(request, response); ``` 其,"/WEB-INF/views/example.jsp"是要跳转jsp文件路径。 方式二:使用重定向 在servlet,我们也可以使用重定向来跳转WEB-INF目录下的jsp文件,示例代码如下: ```java response.sendRedirect(request.getContextPath() + "/WEB-INF/views/example.jsp"); ``` 其,request.getContextPath()获取的是当前Web应用程序的上下文路径,如"/myapp"。需要注意的是,使用重定向需要在web.xml文件配置jsp文件的映射路径,示例代码如下: ```xml <servlet> <servlet-name>example</servlet-name> <servlet-class>com.example.ExampleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>example</servlet-name> <url-pattern>/example</url-pattern> </servlet-mapping> <jsp-config> <jsp-property-group> <url-pattern>/WEB-INF/views/example.jsp</url-pattern> </jsp-property-group> </jsp-config> ``` 其,url-pattern标签的路径"/example"是servlet的访问路径,可以根据实际情况修改。需要注意的是,这种方式会暴露WEB-INF目录下的jsp文件路径,不太安全。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值