一、以ModelAndView形式进行页面跳转
使用第九节 的基础环境
在main-webapp目录下创建jsp目录,并将success.jsp放进去
编辑spring-mvc.xml,改变视图查找路径,从jsp里查找.jsp文件
< bean id = " viewResolver" class = " org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name = " prefix" value = " /jsp/" />
< property name = " suffix" value = " .jsp" />
</ bean>
编辑main-java-study-controller目录的UserController.class文件,新添加一个show2方法,给jsp页面返回一个值
@RequestMapping ( "/quick2" )
public ModelAndView show2 ( ) {
System . out. println ( "show2 running............" ) ;
ModelAndView modelAndView = new ModelAndView ( ) ;
modelAndView. addObject ( "username" , "qwe" ) ;
modelAndView. setViewName ( "success" ) ;
return modelAndView;
}
编辑jsp目录下success.jsp页面,获取值:${username}
修改web.xml,对第一个<web-app>
标签进行修改,否则值el表达式会失效
< 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" >
< display-name> Archetype Created Web Application</ display-name>
< servlet>
< servlet-name> DispatcherServlet</ servlet-name>
< servlet-class> org.springframework.web.servlet.DispatcherServlet</ servlet-class>
< init-param>
< param-name> contextConfigLocation</ param-name>
< param-value> classpath:spring-mvc.xml</ param-value>
</ init-param>
< load-on-startup> 1</ load-on-startup>
</ servlet>
< servlet-mapping>
< servlet-name> DispatcherServlet</ servlet-name>
< url-pattern> /</ url-pattern>
</ servlet-mapping>
</ web-app>
开启tomcat,访问http://localhost:8080/demo03_war/quick2进行测试
二、spring框架的妙用
由于UserController.class需要一个model,我们可以让spring自动生成,不需要我们手动生成,只需要在方法的参数中索要即可
@RequestMapping ( "/quick3" )
public ModelAndView sho3 ( ModelAndView modelAndView, HttpServletRequest request) {
System . out. println ( "show2 running............" ) ;
modelAndView. addObject ( "username" , "qwe" ) ;
request. setAttribute ( "password" , "root" ) ;
modelAndView. setViewName ( "success" ) ;
return modelAndView;
}
三、回写数据——直接回写字符串
使用框架的responnse继续数据回写
@RequestMapping ( "/quick1" )
public void show1 ( HttpServletResponse response) throws IOException {
response. getWriter ( ) . println ( "aaaaa" ) ;
}
使用@ResponseBody注解进行数据回写,不进行页面跳转
@RequestMapping ( "/quick1" )
@ResponseBody
public String show1 ( ) {
return "aaaa" ;
}
四、回写数据——回写json数据
导入坐标
< dependency>
< groupId> com.fasterxml.jackson.core</ groupId>
< artifactId> jackson-core</ artifactId>
< version> 2.13.0-rc2</ version>
</ dependency>
< dependency>
< groupId> com.fasterxml.jackson.core</ groupId>
< artifactId> jackson-databind</ artifactId>
< version> 2.13.0-rc2</ version>
</ dependency>
< dependency>
< groupId> com.fasterxml.jackson.core</ groupId>
< artifactId> jackson-annotations</ artifactId>
< version> 2.13.0-rc2</ version>
</ dependency>
使用ObjectMapper对类进行json转换
@RequestMapping ( "/quick1" )
@ResponseBody
public String show1 ( ) throws JsonProcessingException {
Student s = new Student ( ) ;
s. setName ( "qwe" ) ;
s. setAge ( 12 ) ;
ObjectMapper objectMapper = new ObjectMapper ( ) ;
String json = objectMapper. writeValueAsString ( s) ;
System . out. println ( json) ;
return json;
}
五、回写数据——返回对象或集合让Spring自己转换成json
删除四中的坐标
编辑spring-mvc.xml,配置处理器
< bean class = " org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" >
< property name = " messageConverters" >
< list>
< bean class = " org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</ list>
</ property>
</ bean>
修改UserController.java文件
@RequestMapping ( "/quick1" )
@ResponseBody
public Student show1 ( ) throws JsonProcessingException {
Student s = new Student ( ) ;
s. setName ( "qwe" ) ;
s. setAge ( 12 ) ;
return s;
}
六、回写数据——配置mcv命名空间以简化spring-mvc.xml的配置
将处理器配置注释掉
添加mvc命名空间以及配置注解驱动
< ? 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: 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. xsd
http: / / www. springframework. org/ schema/ context http: / / www. springframework. org/ schema/ context/ spring- context. xsd
http: / / www. springframework. org/ schema/ mvc http: / / www. springframework. org/ schema/ mvc/ spring- mvc. xsd">
< context: component- scan base- package = "study.controller" / >
< bean id= "viewResolver" class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name= "prefix" value= "/jsp/" / >
< property name= "suffix" value= ".jsp" / >
< / bean>
< ! -- 配置注解驱动 -- >
< mvc: annotation- driven/ >
< / beans>