在项目中发现用JSP取不到ModelAndView的数据,但能跳转到对应的页面,显示$("message"),而非对应的值
找了半天原因,发现在web.xml的配置有问题:
原配置为:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app>
当改成这样就可以了:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
没想到与web.xml的配置有关系。原web.xml是我建立项目用maven生成的。
还有一个原因:
一个可能是你实现了HandlerInterceptor并实现了:
void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.Object o, org.springframework.web.servlet.ModelAndView modelAndView) throws java.lang.Exception;
在此处修改了modelAndView
这个是网上找的(http://www.blogjava.net/javagrass/archive/2012/12/17/393107.html)
解决方法:
按照标准用法的话应该是没问题
内部其实把model 通过request.setAttribute(modelName, modelValue); 放入的
内部其实把model 通过request.setAttribute(modelName, modelValue); 放入的
protected void exposeModelAsRequestAttributes(Map<String, Object> model, HttpServletRequest request) throws Exception {
for (Map.Entry<String, Object> entry : model.entrySet()) {
String modelName = entry.getKey();
Object modelValue = entry.getValue();
if (modelValue != null) {
request.setAttribute(modelName, modelValue);
if (logger.isDebugEnabled()) {
logger.debug("Added model object '" + modelName + "' of type [" + modelValue.getClass().getName() +
"] to request in view with name '" + getBeanName() + "'");
}
}
else {
request.removeAttribute(modelName);
if (logger.isDebugEnabled()) {
logger.debug("Removed model object '" + modelName +
"' from request in view with name '" + getBeanName() + "'");
}
}
}
}
for (Map.Entry<String, Object> entry : model.entrySet()) {
String modelName = entry.getKey();
Object modelValue = entry.getValue();
if (modelValue != null) {
request.setAttribute(modelName, modelValue);
if (logger.isDebugEnabled()) {
logger.debug("Added model object '" + modelName + "' of type [" + modelValue.getClass().getName() +
"] to request in view with name '" + getBeanName() + "'");
}
}
else {
request.removeAttribute(modelName);
if (logger.isDebugEnabled()) {
logger.debug("Removed model object '" + modelName +
"' from request in view with name '" + getBeanName() + "'");
}
}
}
}
一个可能是你实现了HandlerInterceptor并实现了:
void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.Object o, org.springframework.web.servlet.ModelAndView modelAndView) throws java.lang.Exception;
在此处修改了modelAndView
void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.Object o, org.springframework.web.servlet.ModelAndView modelAndView) throws java.lang.Exception;
在此处修改了modelAndView
当然还有其他配置不能忘了:
<display-name>dk</display-name> <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/SpringMVC*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>
SpringMVC_servlet.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- ViewResolver --> <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/page/" /> <property name="suffix" value=".jsp" /> </bean> <context:component-scan base-package="com.dk.*.controller" /> <mvc:annotation-driven /> </beans>
当然jsp中也少不了这句:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
pom.xml
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.2.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.2.8.RELEASE</version> </dependency> <!--jstl--> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies>
相关推荐
关于springmvc中的ModelAndView的详细代码,可以更好的了解spring。
springMVC往jsp页面传数据,具体例子
SpringMVC3+jsp
SpringMVC ModelAndView、Model及Map、@SessionAttributes场景与应用
本例实现了springmvc框架,通过这个框架技术来访问项目中的一个简单页面,话不多说,直接上项目
这里我只讲解jsp版本的,与servlet和SpringMVC整合,两种方式的应用。这里提供了纯servlet使用的代码,可以完成一个简单的新闻发布系统,做的比较简单,但是代码写的很详细,根据你自己的需求可以补充的。如果想和...
springmvc增删改,分页,导入数据等功能springmvc增删改,分页,导入数据等功能springmvc增删改,分页,导入数据等功能springmvc增删改,分页,导入数据等功能
Spring+SpringMVC+Hibernate+JSP操作数据
配置多数据源、SpringMVC框架下多数据源的配置问题、如何在同一个项目中使用多个数据库、如果在同一个项目中使用不同的数据库。
springmvc整合mybatis加jsp实现简单的增删改查
对于新手学习SpringMVC+JSP+mybatis+MySQL是一个很好的综合学习案例哦
springmvc-demo08-返回JSON数据.zip
主要介绍了SpringMVC ModelAndView的用法使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
springmvc4.2中文文档springmvc4.2中文文档springmvc4.2中文文档springmvc4.2中文文档springmvc4.
基于SpringMVC+jsp网上选课系统.zip
springmvc+mybatis+ehcache+jsp+sitemesh完美运行
springmvc+mybatis实战示例,带数据结构可运行
SpringMVC将服务器处理后的结果返回并带给浏览器
本博客https://blog.csdn.net/qq_40634846有零基础入门SpringMVC,有兴趣的朋友可关注本博客