什么是springMVC?
SpringMVC的工作原理
SpringMVC核心开发步骤
SpringMVC的组件
5. 如何在项目中添加springmvc
5.1添加相关依赖:
org.springframework
spring-webmvc
${spring.version}
jstl
jstl
1.2
taglibs
standard
1.1.2
5.2 在WEB-INF下添加springmvc-servlet.xml(spring-mvc.xml)
5.3 修改web.xml
在java
Archetype Created Web Application
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.IntrospectorCleanupListener
encodingFilter
com.zking.zf.util.EncodingFiter
true
encoding
UTF-8
encodingFilter
/*
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
/WEB-INF/springmvc-servlet.xml
1
true
SpringMVC
/
目录下新建包com.lagou.edu.controller,下面新建xxxController
package com.lagou.edu.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.Date;
@Controller
@RequestMapping("/mvc")
public class IndexController {
/**
* http://localhost:8080/mvc/index
*/
@RequestMapping("/index")
public ModelAndView demo01(){
Date date=new Date();
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("index");
return modelAndView;
}
}
————————————————
版权声明:本文为CSDN博主「程序员资料站」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yongbutingxide/article/details/106770624
7. 页面跳转
7.1 转发:"forward:path"
7.2 重定向:"redirect:path"
注1:这两种跳转方式将会绕开视图解析器的前缀和后缀
注2:还有就是如果是在同一controller中则不用使用"/"从根目录开始,而如果是在不同的 controller则一定要从根目录开始。
9. 常用注解
9.1 @Controller:用于标识处理器类
@RestController = @ResponseBody + @Controller合在一起的作用
9.2 @RequestMapping:请求到处理器功能方法的映射规则,可定义到类和方法
常用参数:value、method
可将@RequestMapping标签定义到类名处窄化路径
9.3 @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定
常用参数:value、required、defaultValue
注:required设置成false的参数类型必须是引用类型,因为基本数据类型是不能为null的
9.4 @ModelAttribute:请求参数到命令对象的绑定
常用参数:value
9.4.1 可用@ModelAttribute标注方法参数,方法参数会被添加到Model对象中(作用:向视图层传数据)
9.4.2 可用@ModelAttribute标注一个非请求处理方法,此方法会在每次调用请求处理方法前被调用(作用:数据初始化)
9.4.3 可用@ModelAttribute标注方法,方法返回值会被添加到Model对象中(作用:向视图层传数据)
但此方法视图的逻辑图就会根据请求路径解析,例如:a/test42 --> /WEB-INF/a/test42.jsp
太麻烦几乎不用,不用直接保存到Model或ModelAndView中
9.5 @SessionAttributes:指定ModelMap中的哪些属性需要转存到session
常用参数:value、types
注1:必须放到class类名处
9.7 @RequestBody(重要~~~~~):用于目前比较流行的ajax开发的数据绑定(即提交数据的类型为json格式)
注1:使用@RequestBody注解的时候,前台的Content-Type必须要改为application/json,
如果没有更改,前台会报错415(Unsupported Media Type)。
后台日志就会报错Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported。
这些错误Eclipse下Tomcat是不会显示错误信息的,只有使用了日志才会显示
$.ajax({
url : "jsontest",
type : "POST",
async : true,
contentType : "application/json",
data : JSON.stringify(json),
dataType : 'json',
success : function(data) {
if (data.userstatus === "success") {
$("#errorMsg").remove();
} else {
if ($("#errorMsg").length <= 0) {
$("form[name=loginForm]").append(errorMsg);
}
}
}
});
9.8 @ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);
9.9 其它
@CookieValue cookie数据到处理器功能处理方法的方法参数上的绑定
@RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定
@RequestBody:请求的body体的绑定(通过HttpMessageConverter进行类型转换);
@ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;
@ExceptionHandler:注解式声明异常处理器;
@PathVariable:请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定,
@PostConstruct或@PreDestroy:初始化方法/销毁方法
struts2和springMVC的区别:
1、springmvc入口是一个servlet前端控制器( DispatcherServlet ),struts2入口是一个filter过滤器(StrutsPrepareAndExecuteFilter).
2、struts2通过在action类中定义成员变量接收参数,(属性驱动和模型驱动),它只能使用多例模式管理action.
springmvc通过在controller方法中定义形参接收参数,springmvc可以使用单例模式管理controller.
3、springmvc是基于方法开发的,注解开发中使用requestMapping将url和方法进行 映射,如果根据url找到controller类的方法生成一个handler处理器对象(只包括一个method).
struts2是基于类开发的,每个请求过来创建一个action实例,实例对象中有若干个方法.
开发中建议使用springmvc,springmvc方法更类似service业务方法.
4、struts2采用值栈存储请求和相应的数据,通过OGNL存取数据;springmvc通过参数绑定期将request请求内容解析,并给方法形参赋值.
5、struts2和springmvc的速度是相当的,由于struts2的漏洞较多,更多企业使用springmvc
6、SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱。
7、设计思想上,Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展。
8、拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。