SSM框架-SpringMVC篇
程序员文章站
2024-02-26 18:53:34
...
SpringMVC框架介绍
Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。
SpringMvc原理:
* 1.用户发送请求给服务器,URI:/user/index;
* 2.请求会发送给DispatcherServlet,因为在web.xml里配置了,
* 所有的请求都会交给dispatcherServlet处理;
* 3.在dispatcherServlet内部,通过HandlerMapping检查是否
* 有方法和URI对应;
* 4.如果有,就调用该方法,获得JSP文件名;
* 5.viewResolver根据文件名获取响应的jsp文件,转化为视图对象;
* 6.dispatcherServlet将视图对象发送给服务器,由服务器最终
* 发送给用户浏览器.
Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。他的两个核心是两个核心:
1).处理器映射:选择使用哪个控制器来处理请求
2).视图解析器:选择结果应该如何渲染
通过以上两点,Spring MVC保证了如何选择控制处理请求和如何选择视图展现输出之间的松耦合。
SpringMVC原理图
SpingMVC实战代码
@Controller
public class MainController {
// 输入/index.jsp -> home.jsp;
/**
* 此注解是SpringMVC特有的
* 后面value值对应的是返回的字符串;
* value中若想加默认只需要加"/";
* @return
*/
@RequestMapping(value = "/index")
public String frontPage(){
/**
* 可以在返回值中设置请求转发,重定向等操作;
*/
return "home";
}
@RequestMapping(value = "/doo")
public String frontPage2(){
return "welcome";
}
/**
* 两大传值的方式:
* /doo?username=1111;
* /doo/222/333/444;
*两种请求方式:
* get/post
*如何使用Json/xml数据:
* json/xml
*
* 怎么样使用springMvc返回Json/xml数据?
* springMVC需要jackson库才能进行json数据解析和构成,
* 库名:
* jackson-databind
* jackson-core
*
*1.返回json数据:例子如下所示;
*2.返回XML数据:例子如下;
*
* Restful:
* 1.必须是map/实体类:key-value;
* 2.必须要有反馈信息:errorCode(错误代码),msg(具体的错误信息);
* 3.必须要精简,不要将没有意义的字段内容放到json中;
* 4.文档必须要详细,数据接口文档,前段页面流程文档.
*/
// 方式一:
/**
* /infopage/用户名
*/
@RequestMapping(value = "/infopage/{username}")
public String infopage(@PathVariable("username")String name){
System.out.println(name);
return "welcome";
}
/**
* /infopage/用户名/昵称
*/
@RequestMapping(value = "/infopage/{username}/{nickname}")
public String infopage2(@PathVariable("username")String name,
@PathVariable("nickname")String nickname){
System.out.println(nickname);
System.out.println(name);
return "welcome";
}
// 方式二:
/**
* /text?username=222&password=333
* @return
*/
@RequestMapping(value = "/params")
public String paramPage(@RequestParam("username")String name,
@RequestParam("password")String password){
System.out.println(name);
System.out.println(password);
return "text";
}
// Map集合接收
@RequestMapping(value = "/content")
public String contentPage(@RequestParam Map<String,String> params){
System.out.println(params);
return "text";
}
// 实体类接收
@RequestMapping(value = "/stuinfo")
public String studentPage(Student students){
System.out.println(students);
return "text";
}
// 接收post/get请求
@RequestMapping(value = "/stuinfoo",method = RequestMethod.POST)
public String studentPage2(Student students){
System.out.println(students);
return "text";
}
// 返回json数据
@ResponseBody
@RequestMapping(value = "/studentinfo")
public Student student(Student student){
// Student student = new Student("yugege","666","man","yu","earshot","love");
return student;
}
// 返回xml数据
@ResponseBody
@RequestMapping(value = "/studentinfoo")
public Student2 student2(){
Student2 student2 = new Student2("yugege","666","man","yu","earshot","love");
return student2;
}
}
用实体类或者JSON的形式接受时对应的实体类:
package com.lan.bean;
/**
* Created by yugege on 17/9/29.
*/
public class Student {
private String username;
private String password;
private String gender;
private String name;
private String address;
private String hobby;
用XML形式接受时对应的实体类(Student2):
@XmlRootElement("注意此处有注解")
public class Student2 {
private String username;
private String password;
private String gender;
private String name;
private String address;
private String hobby;
}
上一篇: 工厂方法设计模式
下一篇: javaweb开发基础知识应用之实训周
推荐阅读
-
SSM框架-SpringMVC篇
-
详解SSM框架下结合log4j、slf4j打印日志
-
python爬虫框架scrapy实战之爬取京东商城进阶篇
-
详解SpringMVC和MyBatis框架开发环境搭建和简单实用
-
详解如何解决SSM框架前台传参数到后台乱码的问题
-
使用maven整合Spring+SpringMVC+Mybatis框架详细步骤(图文)
-
Spring+SpringMVC+MyBatis整合详细教程(SSM)
-
详解SpringMVC和MyBatis框架开发环境搭建和简单实用
-
ssm框架下web项目,web.xml配置文件的作用(详解)
-
详解Spring框架之基于Restful风格实现的SpringMVC