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第一的访问路径

猜你喜欢

转载自blog.csdn.net/qq_42781684/article/details/82263685