SpringMVC是从属于Spring框架的一部分,重要是用来进行Web开发,是对Servlet进行了封装。
- controller如何吸收哀求和数据
- 如何将哀求和数据转发给业务层
- 如何将响应数据转换成json发回到前端
springMVC注解:
@Controller:
设置controller层的bean对象
@RequestMapping
设置当前控制器方法哀求访问路径
1.属性,params = "uname"
params:
{ "param1=value1" , "param2" , "!param3" }
例子
- @RequestMapping(value = "/index" ,params = {"uname=张三","uid","!upwd"})
复制代码 哀求参数的映射条件,指定哀求的URL地点需要带那些参数
2.method:
RequestMethod.GET 必须以GET方式进入 @GetMapping
RequestMethod.POST 必须以POST方式进入 @PostMapping
- @RequestMapping(value = "/index" ,method = RequestMethod.GET ,params = "uname")
- public ModelAndView index(@RequestParam(value = "uname") String uname,String uid){
- System.out.println(uname+"========");
- System.out.println(uid+"========");
- ModelAndView modelAndView = new ModelAndView();
- System.out.println("进入index方法");
- modelAndView.setViewName("/index.jsp");//转发
- return modelAndView;
- }
- }
复制代码 @ResponseBody
设置当前控制器方法响应内容为当前返回值,无需剖析
@RequestParam:
属性value起别名
属性require是否必须传 false为否
defaultValue:默认值
require和defaultValue有冲突
- @RequestMapping(value = "/index" ,method = RequestMethod.GET,params = {"uname=张三","uid"})
- public ModelAndView index(@RequestParam(value = "uname" ) String uname,String uid){
- ModelAndView modelAndView = new ModelAndView();
- System.out.println("进入index方法");
- modelAndView.setViewName("/index.jsp");//转发
- return modelAndView;
- }
复制代码
ModelAndView:
使用addObject("uname","陈梦雨");方法在request作用域存键和值
- @RequestMapping("/index1" )
- public ModelAndView index1(){
- //返回页面 转发
- // ModelAndView mav = new ModelAndView("视图名");
- // 或
- ModelAndView mav = new ModelAndView();
- mav.setViewName("/index.jsp");
- //存入值 Request作用域
- mav.addObject("uname","陈梦雨");
- return mav;
- }
复制代码
Model对象:
存的值到request作用域中
addAttribute()方法
- @RequestMapping("/index1" )
- public String index1(Model model)
- {
- // 放入request作用域中
- model.addAttribute("user_name","张三");
- return "index.jsp"; //返回user.jsp页面
- }
复制代码
Map对象:
存的值到request作用域中
- @RequestMapping("/index2" )
- public String index2(Map<String ,Object> map)
- {
- map.put("user_name","123");
- return "index.jsp";
- }
复制代码
@ModelAttribute()可以取代model,直接把对象放request作用域内里
- @RequestMapping(value = "/test03" ,method = RequestMethod.GET )
- public String Test03(@ModelAttribute("smbmsUser") SmbmsUser smbmsUser){
- // model存放的都是request作用域
- smbmsUser.setUname("张三");
- return "/index.jsp";
- }
复制代码
@SessionAttributes(value = {"smbmsUser"})放类上面,用来标记放入session的变量
- @SessionAttributes(value = {"smbmsUser"})
- @Controller
- public class BillController {
- @RequestMapping(value = "/test04" ,method = RequestMethod.GET )
- public String Test04(SmbmsUser smbmsUser){
- // model存放的都是request作用域
- smbmsUser.setUname("张三");
- return "/index.jsp";
- }
- }
复制代码 像这种user_name同时存进了Request作用域和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的属性添加到会话中。
复制代码
session,request,response对象:
引入包
- <!--servlet-api-->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
- </dependency>
复制代码
这上头的参数和从前servlet的一样,如许就可以或许直接使用这三个对象了
- @RequestMapping(value = "/test04" ,method = RequestMethod.GET )
- public String Test04(HttpServletRequest request, HttpServletResponse response,
- HttpSession session){
- // model存放的都是request作用域
- session.setAttribute("uname","张三");
- return "/index.jsp";
- }
复制代码
转发与重定向:
这种就是转发,不写forword也是默认转发
- return "forward:/index.jsp";
复制代码 这种就是重定向
- return "redirect:/index.jsp";
复制代码
@ResponseBody:
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>
复制代码 @DateTimeFormat:
可以在实体类的字段上使用
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime createTime;
复制代码 @JsonFormat
返回JSON数据时日期类型处理
- @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
- @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
- private Date user_login_endtime;
复制代码 ResultJson工具类:
注意肯定是返回ResultJSON而且要加上@ResponseBody返回json类型
- @ResponseBody
- @RequestMapping("/test07" )
- public ResultJSON Test07( ){
- SmbmsUser smbmsUser = new SmbmsUser();
- smbmsUser.setUid(111);
- smbmsUser.setUname("陈梦雨");
- return ResultJSON.success(smbmsUser);
- }
复制代码
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
表现属性为null不返回
@RestController:
标注该类中全部的方法都返回JSON 用于类中。无须在写@Controller
写在类上方
@DateTimeFormat:
用户对象属性,控制入参时日期类型转换
- @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
- private Date user_login_endtime;
复制代码
Rest模式:
就是这个.html是虚假的,是由我们来操纵内容,但是页面还是index.jsp页面
- @RequestMapping(value="/test/{user_id}.html")
- public String index1(@PathVariable("user_id") Long user_id,HttpServletRequest request)
- {
- request.setAttribute("user_id",user_id);
- System.out.println("id======"+user_id);
- return "/index.jsp";
- }
复制代码
配置数据:
pom.xml
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- </dependency>
复制代码 spring-config中:
- <!--自动扫描的包名,只扫描@Controller -->
- <context:component-scan base-package="com.hz.controller"/>
- <!--开启注解-->
- <mvc:annotation-driven/>
复制代码 <web-app>中:
- <web-app>
- <display-name>Archetype Created Web Application</display-name>
- <!--配置前端控制器-->
- <servlet>
- <servlet-name>dispatcherServlet</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!--contextConfigLocation classpath 加载spring-mvc.xml -->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring-*.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>
复制代码 Controller中
- @Controller
- public class UserController {
- @RequestMapping("/index")
- public ModelAndView index(){
- ModelAndView modelAndView = new ModelAndView();
- System.out.println("进入index方法");
- modelAndView.setViewName("/index.jsp");//转发
- return modelAndView;
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |