@MRsunhuimin
2019-09-02T00:17:20.000000Z
字数 3641
阅读 189
SSM框架
使用注解前应扫包并开启注解
<!--自动扫描的包名,只扫描@Controller -->
<context:component-scan base-package="com.hz.controller" >
<!--开启注解-->
<mvc:annotation-driven/>
标注一个普通的JavaBean成为可以处理请求的控制器
通过请求URL进行映射
//标识在类上
@RequestMapping("/index")
public class IndexController{
//在方法上
@RequestMapping(value="/ts",method = RequestMethod.GET)
public ModelAndView index(){
.....
}
method:
RequestMethod.GET 必须以GET方式进入
RequestMethod.POST 必须以POST方式进入
params:
{ "param1=value1" , "param2" , "!param3" }
请求参数的映射条件,指定请求的URL地址需要带那些参数
参数传递
public ModelAndView index(@RequestParam(value = "name1",required = false) String user_name)
{
.......
}
value:属性名,如:xxxx?name1=...
required:是否必须 false为否
defaultValue:默认值
只能定义在类上,作用是将指定的Model中的键值对添加至session中
//类中定义user_name存入session作用域
@SessionAttributes(value = {"user_name"})
public class IndexController {
@RequestMapping("/ts")
public ModelAndView index(){
ModelAndView mav = new ModelAndView("user");
//存入Request作用域和Session作用域
mav.addObject("user_name",user_name);
....
}
}
@SessionAttributes(types=User.class)会将model中所有类型为 User的属性添加到会话中。
@SessionAttributes(value={“user1”, “user2”}) 会将model中属性名为user1和user2的属性添加到会话中。
@SessionAttributes(types={User.class, Dept.class}) 会将model中所有类型为 User和Dept的属性添加到会话中。
@SessionAttributes(value={“user1”,“user2”},types={Dept.class})会将model中属性名为user1和user2以及类型为Dept的属性添加到会话中。
返回JSON数据
引入JSON依赖包
<!--JSON依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
@ResponseBody
@RequestMapping("/testjson")
public User jsons(@RequestParam long user_id){
User user = this.userService.getUserById(user_id);
return user;//直接返回对象
}
@RequestMapping(value="/ts1")
public String index1(@ModelAttribute("user") User user)
{
user.setUser_name("张三");
System.out.println(user.getUser_name());
return "user";
}
用户对象属性,控制入参时日期类型转换
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date user_login_endtime;
返回JSON数据时日期类型处理
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date user_login_endtime;
包含视图信息和模型数据信息
public ModelAndView index1(){
//返回页面 转发
ModelAndView mav = new ModelAndView("视图名");
或
ModelAndView mav = new ModelAndView();
mav.setViewName("视图名");
//存入值 Request作用域
mav.addObject("键","值");
return mav;
}
以Map方式进行存储,用于向作用域中存值
public String index1(Model model)
{
model.addAttribute("user_name","张三");
return "user"; //返回user.jsp页面
}
//注意:在Model中增加模型数据,若不指定key,则默认使用对象的类型作为key
以Map方式进行存储,用于向作用域中存值
public String index1(Map<String ,Object> map)
{
map.put("user_name","123");
return "user";
}
传入参数名必须与实体类对应,一般用于添加,修改类中多个属性时
@RequestMapping(value="/ts1")
public String index1(User user)
{
System.out.println(user.getUser_name());
return "user";
}
public String index1(User user)
{
.....
return "redirect:/user.jsp";//重定向
return "forward:页面";//转发
}
@RequestMapping(value="/ts1/{user_id}.html")
public String index1(@PathVariable("user_id") Long user_id)
{
System.out.println("id======"+user_id);
return "user";
}
请求路径为:.../ts1/参数.html
如:..../ts1/1.html或..../ts1/10.html
引入servlet-api.jar
<!--servlet-api-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
public String cs(HttpServletRequest request, HttpServletResponse response, HttpSession session){
session.setAttribute("username","123");
return "user";
}
- 清晰地角色划分
- 灵活的配置功能
- 提供了大量的控制器接口和实现类
- 真正做到与View层的实现无关(JSP、Velocity、Xslt等)
- 国际化支持
- 面向接口编程
- Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起