6
回答
springmvc Controller页面跳转控制

springmvc项目中将jsp页面放入了web-inf目录下,导致只能通过*.do访问到界面,这就造成了每个页面都要写一个专门的方法用于跳转页面,如下


请问springmvc中有没有提供那种根据方法名的不同返回不同的页面,将所有页面跳转控制在一个方法里,自己找了很久没有找到解决方法,特此求助。

<无标签>
举报
共有6个答案 最后回答: 3年前

// example: 
// /goto/view/index -> /WEB-INF/view/index.jsp
@RequestMapping("/goto/{p}/{c}")
public String goPage(String p, String c) {
    // or: "easyui/officialdoc/receipt/" + p + "/" + c
    return p + "/" + c;
}




如下,可供参考:

/**
	 * 后台list页面
	 * 如请求地址为:   	http://localhost:8080/web/sysmanRole/list
	 * 则返回的页面应该在    /web/WEB-INF/views/sysmanRole/list.jsp
	 * @return
	 */
	@RequestMapping(value = "/list", method = RequestMethod.GET)
	public ModelAndView list(ModelAndView model) {
		RequestMapping rm = this.getClass().getAnnotation(RequestMapping.class);
		String moduleName = "";
		if (rm != null) {
			String[] values = rm.value();
			if (ArrayUtils.isNotEmpty(values)) {
				moduleName = values[0];
			}
		}
		if (moduleName.endsWith("/")) {
			moduleName = moduleName.substring(0, moduleName.length() - 1);
		}
		
		model.setViewName("views/" + moduleName + "/list");
		model.addObject("moduleName", moduleName);
		return model;
	}



--- 共有 3 条评论 ---
alexgaoyh回复 @千重山 : 当时写这段代码的逻辑是,后台有多个controller,都要返回同一个页面,写了BaseController类,获取到当前请求的url,对字符串进行操作,封装返回页面。 http://git.oschina.net/alexgaoyh/alexgaoyh 3年前 回复
alexgaoyh@千重山 是的,当时写的 BaseController 里面的通用方法,返回对应路径下的页面, 3年前 回复
合抱之木-生于毫末你这是返回一个页面? 3年前 回复

<servlet-mapping>

<servlet-name>springDispathcerServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>



可以不拦截jsp后缀的文件啊,在web.xml里面配置.


springmvc项目中将jsp页面放入了web-inf目录下,导致只能通过*.do访问到界面
这个地方就需要改进了!  

为什么要配置成*.do ?所有都走spring mvc,视图映射都是配好的, jsp直接会访问 WEB-INF/jsp/ 下的,无需每个都配置啊。 controller里面需要跳转的直接返回 views的jsp文件名字字符串即可啊。 

顶部