3
回答
springmvc返回的页面404 在线等答案
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

说明:项目是Spring Springmvc Hibernate Shiro整合的测试项目

首先贴出我的配置文件的关键配置

web.xml 中DispatchServlet配置的是拦截全部路径,如下图


<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:config/config_spring/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
Springmvc配置文件的视图解析器配置为



<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />  
    	<property name="prefix" value="/WEB-INF/jsp/" />
    	<property name="suffix" value=".jsp" />
	</bean>

问题描述:

   
在页面点击a标签



<a href="${pageContext.request.contextPath }/user/getAll" target="_blank">查询用户列表</a>

下面是UserAction.java中对应的功能处理方法

@RequiresPermissions("user:view")
	@RequestMapping(value="/getAll",method=RequestMethod.GET)
	public Object getAll(ModelMap modelMap){
//		Subject currentUser = SecurityUtils.getSubject();
//		if(!currentUser.hasRole("admin")){
//			System.out.println("没有admin角色");
//			return "index";
//		}
		List<User> userList = userService.findAll();
		modelMap.put("userList", userList);
		return "admin/userList";
	}

首先我需要说明的是当我点击a标签后,断点调试是会进入上面的功能处理方法的,但执行到

return "admin/userList";
这一句页面的返回并不是 项目名/ WEB-INF/jsp/admin/userList.jsp,而userList.jsp是的的确确存在的,真正让我困扰的是页面返回的是..,还是看图吧



不知大家注意没,我请求的路径是${pageContext.request.contextPath}/user/getAll 。而返回的404路径也是mich_shiro/web-inf/jsp/user/getAll.jsp,看起来是Spring mvc的视图解析器直接把我的请求路径给解析并返回了,为了验证这个,我把请求路径改为${pageContext.request.contextPath}/user/getAllabc,而返回的mich_shiro/web-inf/jsp/user/getAllabc.jsp,同样是报的404错误。

之前配置Springmvc的url-pattern都是拦截*.do *.jspx这一类带后缀名的,这次配置了拦截所有请求就出现了这样的错误,哪位大哥看到还请指点迷津,在此先谢过。




举报
梁阳波
发帖于3年前 3回/4K+阅
共有3个答案 最后回答: 2年前
  1. 我的方法是  return  " userList";
  2. 然后 Struts中  <result name="userList">WEB-INF/jsp/admin/userList.jsp</result>
  3. 这跳转可以实现的
--- 共有 1 条评论 ---
梁阳波 此处使用的是Springmvc控制器,并未使用Struts 3年前 回复

1,这个 @RequiresPermissions("user:view") 是什么?

2,确定读取到了springmvc的那个jsp转向配置了吗?有时候配置web.xml时貌似classpath:要写成classpath*:这样的也行,没具体研究过,但不写星号确实读不到配置。

3,一般方法都是public String 的,你的是Object,要不换成String试试?

--- 共有 1 条评论 ---
梁阳波1:@RequiresPermissions("user:view")是权限注解 2:* 加与不加貌似都能读取 3:改成String还真就解决了我的问题,之前用Object都ok的,看来有必要跟进一下,总之谢谢你 3年前 回复
顶部