WEB-INF下jsp之间的跳转

WEB-INF下jsp之间的跳转

        在做项目的过程中,发现自己在WEB-INF目录下jsp页面的相互跳转出现了问题,无论是用相对路径还是绝对路径都报错,后来发现这是JSP的安全性在作怪,WEB-INF目录下的东西是不能被用户访问的,提高了安全性,但有时候我们需要访问该页面时,要怎么做呢?

普通web项目:

  • 方式一 : 使用request.getRequestDispatcher("/WEB-INF/views/a.jsp").forward(request,response);

注意 : 不能使用重定向

如WEB-INF/views目录下有a.jsp和b.jsp两个页面,你想由a跳转到b.
可在webapp目录下新建一个jsp页面c.jsp,先由a.jsp跳转到c.jsp,再由c.jsp跳转到b.jsp.

a.jsp
	<a href="<%=basePath%>c.jsp">跳转</a>
	
	c.jsp
	<a href="<%request.getRequestDispatcher("/WEB-INF/views/b.jsp").forward(request,response);%>">跳转</a>
	
	b.jsp

  • 方式二 : <jsp:forward page ="/WEB-INF/views/b.jsp" />

在webapp下新建一个c.jsp,在jsp写上上面的代码.a.jsp–>c.jsp–>b.jsp


  • 方式三 : 在web.xml里面配置servlet和servlet mapping
 <servlet>
	   <servlet-name>goto</servlet-name>
	   <jsp-file>/WEB-INF/views/b.jsp</jsp-file>--要跳转到的页面
	 </servlet>
	
	 <servlet-mapping>
	   <servlet-name>goto</servlet-name>
	   <url-pattern>/test</url-pattern>
	 </servlet-mapping>

配置好了就可以在a.jsp页面中使用a标签跳转了<a href=<%=basePath%>test">测试页面跳转</a>


SSM项目下的一种跳转方式:

  1. 添加跳转的controller
@RequestMapping("/page")
	@Controller
	public class PageController {
		@RequestMapping("{pageName}")
		public ModelAndView toPage(@PathVariable("pageName") String pageName){
			ModelAndView mv = new ModelAndView(pageName);
			return mv ;
		}
	}

2.spring-mvc中

<!-- 配置jsp 显示ViewResolver -->
	    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
	        <property name="prefix" value="/WEB-INF/views/"/>
	        <property name="suffix" value=".jsp"/>
	    </bean>

3.在jsp中的使用

<a href="<%=basePath%>/views/b">登陆</a>
		/<%=basePath%>  项目名  可以省略,采用相对路径访问,也可以使用jsp的内置对象
		/viewse	controller第一的访问路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值