问题描述:
我昨晚敲到这里的时候 发现我的jsp里怎么度没有controller返回的对象
这是我的页面表格
但是我的controller里是可以取到jackson对象的 也打印出来了
我的UserController.java代码
@Controller
@RequestMapping("/user")
public class UserController {
//注入service对象
@Resource
private UserService userService;
@RequestMapping("/findAll")
public String findAll(Model model){
System.out.println("执行了");
List<User> users = userService.findAll();
model.addAttribute("users",users);
//return "redirect:/list.jsp";
return "index";
}
}
我的index.jsp页面内下的table代码
<c:forEach items="${users}" var="user" varStatus="s">
<tr>
<td>${s.count}</td>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.sex}</td>
<td>${user.telephone}</td>
<td>${user.address}</td>
</tr>
</c:forEach>
我的web.xml下的servlet-mapping
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我的springmvc.xml下的视图解析器的代码
<!--配置视图解析器:简化在controller类编写的视图路径-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--访问的前缀-->
<property name="prefix" value="/WEB-INF/pages/"/>
<!--访问的后缀-->
<property name="suffix" value=".jsp"/>
</bean>
我的目录结构
问题分析:
问题就在后面两个xml和这个目录结构中 controller和jsp的代码完全没问题
首先要知道在webapp下,但是在WEB-INF目录外的页面,我们才能直接访问
而WEB-INF目录下的jsp,是需要通过一些技术实现,我这里是controller类,通过这些类内部跳转才能访问
从我的目录结构可以看到
我的index.jsp这个页面是在WEB-INF文件夹外面的,也就是可以直接通过localhost:8080/index.jsp访问
但是我的controller只能访问springmvc.xml下的视图解析器给的路径,也就是/WEB-INF/pages /index.jsp才能访问到
换句话来说,我的controller类,最后return "index;根本return不过去
这也就是我取不到controller类返回对象的原因
测试过程:
我是在这两个地方分别创建了一样的list.jsp测试出来的
我的测试代码:
<html>
<head>
<title>Title</title>
</head>
<body>
查询账户1
<c:forEach items="${users}" var="user" varStatus="s">
${s.count}
${user.username}
${user.password}
${user.sex}
${user.telephone}
${user.address}
</c:forEach>
</body>
</html>
解决方案:
首先我要说明我的解决方法在我这种情况下是解决了的,但是你得保证你的controller可以取得到jackson对象的情况下
代码无误的同志们,你们可以先检查一下你们的配置
我把我的Index.jsp放在了WEB-INF/pages/下
这样我的controller就可以用视图解析器解析到我的Index页面
但是与之而来的,就是现在不能通过localhost:8080/index.jsp直接访问了
我想这个页面由于是我的后台页面,应该可以通过登录页面跳转过去
暂时还没做到那一步,就暂时这样吧
我通过http://localhost:8080/user/findAll,访问到了我的controller类中的findAll方法
后来,这个findAll方法将我的mv对象,通过springmvc.xml配置的视图解析器方法,
返回到了我在/WEB-INF/pages/index.jsp
最后我的数据就成功封装进去了