SpringMVC常用标签,rest风格

目录

一、使用Spring MVC实现新增用户

1、更新User类中属性

2、改造Controller层—UserController.java

3、改造View层

二、转发跳转

1.字符串 一个对应一个 View视图

2.但是如果路径特别深,需要 "视图解析器",在spring-servlet.xml中配置 除去了前缀,后缀。

3.使用ModelAndView,将视图页面和对象放到ModelAndView对象当中,实现跳转功能

三、使用REST风格(一种软件架构风格)

 1.使用Spring MVC实现用户查看

 2、将内容详情用List展示出来



一、使用Spring MVC实现新增用户

1、更新User类中属性

  • 这里注意:
  1. Spring MVC框架中时间类型的数据无法自动绑定
  2. birthday是Date的类型,所以需要进行格式化注解@DateTimeFormat
  3. @ModelAttribute 不仅仅和从页面中获取对象的所有属性,而且可以将对象放入request当中
  4. @DateTimeFormat(pattern="yyyy-MM-dd")的使用 设置对应日期属性的字符串格式
  5. 若未注解,则400状态码:请求错误
public class User {
    private String name;
    private int password;
    //@DateTimeFormat(pattern="yyyy-MM-dd")的使用
    //设置对应日期属性的字符串格式
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    private String sex;
    private int age;

 constructor构造器方法
 setter和getter方法
}

2、改造Controller层—UserController.java

  • addUser()方法:从列表页进入新增页面
  • @ModelAttribute
  • Model
 @RequestMapping("/toaddUser.action")
 public String toaddUser(){
        logger.info("去增加页面");
        return "addUser";
 }
 @RequestMapping("/addUser.action")
 //ModelAttribute
 //不仅仅和从页面中获取对象的所有属性,而且可以将对象放入request当中
    public String addUser(@ModelAttribute("user") User user){
    logger.info(user);
    logger.info(user.getName());
    logger.info(user.getPassword());
    logger.info(user.getBirthday());
    logger.info(user.getSex());
    logger.info(user.getAge());
    return "redirect:tologin.action";
 }

3、改造View层

注意jsp中的name与User类中的属性一致

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>增加用户</title>
</head>
<body>
<form action="addUser.action" method="post">
    <p>用户名:<input type="text" placeholder="请输入用户名" name="name" required="required"></p>
    <p>密码:<input type="password" placeholder="请输入密码" name="password" required="required"></p>
    <p>生日:<input type="date" name="birthday" ></p>
    <p>性别:<input type="radio" value="m" name="sex">男<input type="radio" value="f" name="sex">女</p>
    <p>年龄:<input type="number" name="age"></p>
    <p><input type="submit" value="添加"><input type="reset" value="重置"></p>
</form>
</body>
</html>


二、转发跳转

1.字符串 一个对应一个 View视图

  • 我们用login事务来展示

springmvc 对于跳转这件事,简化!(不用配置,可以使用字符串自动跳转)

代码如下(示例):

@Controller
public class UserController {
 Logger logger =Logger.getLogger(UserController.class);

    @RequestMapping("/tologin.action")
    public String toLogin(){
        logger.info("进去登陆页面");
        return "login";//目标页面名称
    }
}

2.但是如果路径特别深,需要 "视图解析器",在spring-servlet.xml中配置 除去了前缀,后缀。

代码如下(示例):

  <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

3.使用ModelAndView,将视图页面和对象放到ModelAndView对象当中,实现跳转功能

推荐使用mv4

@Controller
public class ModelAndViewController {
    Logger logger = Logger.getLogger(ModelAndViewController.class);
    @RequestMapping("/mv1.action")
    public ModelAndView mv1(String username){
        logger.info(username);
        //创建ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
        //把用户名放进作用域
        modelAndView.addObject("username",username);
        //将视图名称放入mv
        modelAndView.setViewName("main");
        return modelAndView;

    }
    @RequestMapping("/mv2.action")
    public ModelAndView mv2(String username,int password){
     logger.info(username);
     //创建用户对象
        User user = new User();
        user.setUsername(username);
        user.setPassWord(password);
        //创建ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
        //把用户名放进作用域
        modelAndView.addObject("user",user);
        //将视图名称放入mv
        modelAndView.setViewName("main");
        return modelAndView;

    }
    @RequestMapping("/mv3.action")
    public String mv3(String username, Map<String,Object> model){
      logger.info(username);
      model.put("username",username);
      return "main";//视图的名称
    }
    @RequestMapping("/mv4.action")
    public String mv4(String username, Model model){
        logger.info(username);
        model.addAttribute("username",username);
        return "main";
    }

三、使用REST风格(一种软件架构风格)

 它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

 1.使用Spring MVC实现用户查看

  • 使用REST风格获取用户的信息
  • @PathVariable标签的使用
  • 注意:参数类型,int password--Integer password
 @RequestMapping(value = "/main/{name}/{password}",method = RequestMethod.GET)
    public String main(@PathVariable String name, @PathVariable Integer password, Model model){
        logger.info(name);
        logger.info(password);
        User user = new User();
        user.setName("姓名是"+name);
        user.setPassword(password);
        model.addAttribute("user",user);
        return "main";

 }

在web.xml中需要将url-pattern更改为“/”

 <!-- 使用REST风格-->
        <url-pattern>/</url-pattern>

  •  我们试着用博客ID查找用户:

博客:标题和内容

    @RequestMapping(value = "/bloginfo/{bid}",method = RequestMethod.GET)
    public String bloginfo(@PathVariable int bid,Model model){
        logger.info(bid);
        Blog blog = new Blog();
        blog.setTitle("编号为"+bid+"的博客");
        blog.setContext("内容...");
        model.addAttribute("blog",blog);
        return "bloginfo";
    }

bologinfo.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>博客内容</title>
</head>
<body>
<p>博客标题:${blog.title}</p>
<p>博客内容:${blog.context}</p>
</body>
</html>

 2、将内容详情用List展示出来

我们继续用博客举例

BlogController

@Controller
public class BlogController {
    Logger logger = Logger.getLogger(BlogController.class);
    @RequestMapping("/blog.action")
    public String blog(String title, String context, Model model){
        logger.info(title);
        logger.info(context);
        List<Blog> list = new ArrayList<>();
        list.add(new Blog("标题","内容"));
        list.add(new Blog("标题2","内容2"));
        list.add(new Blog("标题3","内容3"));
        model.addAttribute("list",list);
        return "blog";
    }

blog.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>博客列表</title>
</head>
<body>
<h1>主页面</h1>
<ul>
<c:forEach items="${list}" var="blog">
    <li>${blog.title}:${blog.context}</li>
</c:forEach>
</ul>

</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值