SpringMVC

打印 上一主题 下一主题

主题 834|帖子 834|积分 2502

SpringMVC是从属于Spring框架的一部分,重要是用来进行Web开发,是对Servlet进行了封装。



  • SpringMVC==重要==负责的就是




    • controller如何吸收哀求和数据
    • 如何将哀求和数据转发给业务层
    • 如何将响应数据转换成json发回到前端


springMVC注解:

@Controller:

设置controller层的bean对象
@RequestMapping

设置当前控制器方法哀求访问路径
1.属性,params = "uname"
params:
{ "param1=value1" , "param2" , "!param3" }
例子
  1.     @RequestMapping(value = "/index" ,params = {"uname=张三","uid","!upwd"})
复制代码
哀求参数的映射条件,指定哀求的URL地点需要带那些参数

2.method:
RequestMethod.GET 必须以GET方式进入 @GetMapping
RequestMethod.POST 必须以POST方式进入 @PostMapping
  1. @RequestMapping(value = "/index" ,method = RequestMethod.GET ,params = "uname")
  2.     public ModelAndView index(@RequestParam(value = "uname") String uname,String uid){
  3.         System.out.println(uname+"========");
  4.         System.out.println(uid+"========");
  5.         ModelAndView modelAndView = new ModelAndView();
  6.         System.out.println("进入index方法");
  7.         modelAndView.setViewName("/index.jsp");//转发
  8.         return modelAndView;
  9.     }
  10. }
复制代码
@ResponseBody

设置当前控制器方法响应内容为当前返回值,无需剖析

@RequestParam:

属性value起别名
属性require是否必须传 false为否
defaultValue:默认值

require和defaultValue有冲突
  1.     @RequestMapping(value = "/index" ,method = RequestMethod.GET,params = {"uname=张三","uid"})
  2.     public ModelAndView index(@RequestParam(value = "uname" ) String uname,String uid){
  3.         ModelAndView modelAndView = new ModelAndView();
  4.         System.out.println("进入index方法");
  5.         modelAndView.setViewName("/index.jsp");//转发
  6.         return modelAndView;
  7.     }
复制代码

ModelAndView:

使用addObject("uname","陈梦雨");方法在request作用域存键和值
  1.     @RequestMapping("/index1" )
  2.     public ModelAndView index1(){
  3. //返回页面 转发
  4. //        ModelAndView mav = new ModelAndView("视图名");
  5. //        或
  6.         ModelAndView mav = new ModelAndView();
  7.         mav.setViewName("/index.jsp");
  8. //存入值 Request作用域
  9.         mav.addObject("uname","陈梦雨");
  10.         return mav;
  11.     }
复制代码



Model对象:

存的值到request作用域中
addAttribute()方法
  1.     @RequestMapping("/index1" )
  2.     public String index1(Model model)
  3.     {
  4. //        放入request作用域中
  5.         model.addAttribute("user_name","张三");
  6.         return "index.jsp"; //返回user.jsp页面
  7.     }
复制代码

Map对象:

存的值到request作用域中
  1. @RequestMapping("/index2" )
  2.     public String index2(Map<String ,Object> map)
  3.     {
  4.         map.put("user_name","123");
  5.         return "index.jsp";
  6.     }
复制代码

@ModelAttribute()可以取代model,直接把对象放request作用域内里

  1.     @RequestMapping(value = "/test03" ,method = RequestMethod.GET )
  2.     public String Test03(@ModelAttribute("smbmsUser") SmbmsUser smbmsUser){
  3. //        model存放的都是request作用域
  4.         smbmsUser.setUname("张三");
  5.         return "/index.jsp";
  6.     }
复制代码


@SessionAttributes(value = {"smbmsUser"})放类上面,用来标记放入session的变量

  1. @SessionAttributes(value = {"smbmsUser"})
  2. @Controller
  3. public class BillController {
  4.         @RequestMapping(value = "/test04" ,method = RequestMethod.GET )
  5.     public String Test04(SmbmsUser smbmsUser){
  6. //        model存放的都是request作用域
  7.         smbmsUser.setUname("张三");
  8.         return "/index.jsp";
  9.     }
  10. }
复制代码
像这种user_name同时存进了Request作用域和Session作用域

  1. //类中定义user_name存入session作用域
  2. @SessionAttributes(value = {"user_name"})
  3. public class IndexController {
  4. @RequestMapping("/ts")
  5. public ModelAndView index(){
  6. ModelAndView mav = new ModelAndView("user");
  7. //存入Request作用域和Session作用域
  8. mav.addObject("user_name",user_name);
  9. ....
  10. }
复制代码

  1. @SessionAttributes(types=User.class)会将model中所有类型为 User的属性添加到会话中。
  2. @SessionAttributes(value={“user1”, “user2”}) 会将model中属性名为user1和user2的属性添
  3. 加到会话中。
  4. @SessionAttributes(types={User.class, Dept.class}) 会将model中所有类型为 User和Dept
  5. 的属性添加到会话中。
  6. @SessionAttributes(value={“user1”,“user2”},types={Dept.class})会将model中属性名为
  7. user1和user2以及类型为Dept的属性添加到会话中。
复制代码

session,request,response对象:

引入包
  1. <!--servlet-api-->
  2. <dependency>
  3. <groupId>javax.servlet</groupId>
  4. <artifactId>javax.servlet-api</artifactId>
  5. <version>3.1.0</version>
  6. <scope>provided</scope>
  7. </dependency>
复制代码

这上头的参数和从前servlet的一样,如许就可以或许直接使用这三个对象了
  1.     @RequestMapping(value = "/test04" ,method = RequestMethod.GET )
  2.     public String Test04(HttpServletRequest request, HttpServletResponse response,
  3.                          HttpSession session){
  4. //        model存放的都是request作用域
  5.         session.setAttribute("uname","张三");
  6.         return "/index.jsp";
  7.     }
复制代码

转发与重定向:

这种就是转发,不写forword也是默认转发
  1.   return "forward:/index.jsp";
复制代码
  1.   return "/index.jsp";
复制代码
这种就是重定向
  1. return "redirect:/index.jsp";
复制代码

@ResponseBody:

json依靠包
  1. <!--JSON依赖-->
  2. <dependency>
  3. <groupId>com.fasterxml.jackson.core</groupId>
  4. <artifactId>jackson-core</artifactId>
  5. <version>2.4.3</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.fasterxml.jackson.core</groupId>
  9. <artifactId>jackson-databind</artifactId>
  10. <version>2.4.3</version>
  11. </dependency>
复制代码
@DateTimeFormat:

可以在实体类的字段上使用
  1. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  2.     private LocalDateTime createTime;
复制代码
@JsonFormat

返回JSON数据时日期类型处理
  1. @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
  2. @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
  3. private Date user_login_endtime;
复制代码
ResultJson工具类:

注意肯定是返回ResultJSON而且要加上@ResponseBody返回json类型
  1.     @ResponseBody
  2.     @RequestMapping("/test07" )
  3.     public ResultJSON Test07(  ){
  4.         SmbmsUser smbmsUser = new SmbmsUser();
  5.         smbmsUser.setUid(111);
  6.         smbmsUser.setUname("陈梦雨");
  7.         return ResultJSON.success(smbmsUser);
  8.     }
复制代码

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)

表现属性为null不返回

@RestController:

标注该类中全部的方法都返回JSON 用于类中。无须在写@Controller
写在类上方
@DateTimeFormat:

用户对象属性,控制入参时日期类型转换
  1. @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
  2. private Date user_login_endtime;
复制代码

Rest模式:

就是这个.html是虚假的,是由我们来操纵内容,但是页面还是index.jsp页面
  1.     @RequestMapping(value="/test/{user_id}.html")
  2.     public String index1(@PathVariable("user_id") Long user_id,HttpServletRequest request)
  3.     {
  4.         request.setAttribute("user_id",user_id);
  5.         System.out.println("id======"+user_id);
  6.         return "/index.jsp";
  7.     }
复制代码

配置数据:


pom.xml
  1.     <dependency>
  2.       <groupId>org.springframework</groupId>
  3.       <artifactId>spring-web</artifactId>
  4.       <version>${spring.version}</version>
  5.     </dependency>
  6.     <dependency>
  7.       <groupId>org.springframework</groupId>
  8.       <artifactId>spring-webmvc</artifactId>
  9.       <version>${spring.version}</version>
  10.     </dependency>
  11.     <dependency>
  12.       <groupId>javax.servlet</groupId>
  13.       <artifactId>servlet-api</artifactId>
  14.       <version>2.5</version>
  15.     </dependency>
复制代码
spring-config中:
  1.     <!--自动扫描的包名,只扫描@Controller -->
  2.     <context:component-scan base-package="com.hz.controller"/>
  3.     <!--开启注解-->
  4.     <mvc:annotation-driven/>
复制代码
<web-app>中:
  1. <web-app>
  2.   <display-name>Archetype Created Web Application</display-name>
  3.   <!--配置前端控制器-->
  4.   <servlet>
  5.     <servlet-name>dispatcherServlet</servlet-name>
  6.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  7.     <!--contextConfigLocation  classpath  加载spring-mvc.xml -->
  8.     <init-param>
  9.       <param-name>contextConfigLocation</param-name>
  10.       <param-value>classpath:spring-*.xml</param-value>
  11.     </init-param>
  12.     <!--启动时加载-->
  13.     <load-on-startup>1</load-on-startup>
  14.   </servlet>
  15.   <servlet-mapping>
  16.     <servlet-name>dispatcherServlet</servlet-name>
  17.     <url-pattern>/</url-pattern>
  18.   </servlet-mapping>
  19. </web-app>
复制代码
Controller中
  1. @Controller
  2. public class UserController {
  3.     @RequestMapping("/index")
  4.     public ModelAndView index(){
  5.         ModelAndView modelAndView = new ModelAndView();
  6.         System.out.println("进入index方法");
  7.         modelAndView.setViewName("/index.jsp");//转发
  8.         return modelAndView;
  9.     }
  10. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表