SpringMVC入门——day02:SpringMVC常用注解

本文详细解析了Spring MVC框架中的各种注解用法,包括@RequestParam、@RequestBody、@PathVariable、@RequestHeader、@CookieValue、@ModelAttribute和@SessionAttributes等,深入探讨了它们在Web应用开发中的应用场景和实现细节。

1. RequestParam

在这里插入图片描述

示例:(在上篇代码的基础上进行编写)

webapp — anno.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <a href="anno/testRequestParam?name=哈哈">RequestParam</a>
</body>
</html>

controller — AnnoController.java

@Controller
@RequestMapping("/anno")
public class AnnoController {

    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(value = "name") String username) {
        System.out.println("执行了。。。");
        System.out.println(username);
        return "success";
    }
}

正常运行。
@RequestParam(value = “name”) 中的 “name” 必须和anno.jsp 中 name=哈哈" 相同。

2. RequestBody(用于异步)

在这里插入图片描述
anno.jsp

    <form action="anno/testRequestBody" method="post">
        用户姓名:<input type="text" name="username"><br/>
        用户年龄:<input type="text" name="age"><br/>
        <input type="submit" value="提交">
    </form>

AnnoController

    //RequestBody:获取请求体内容
    @RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body) {
        System.out.println("执行了。。。");
        System.out.println(body);
        return "success";
    }

输出:
在这里插入图片描述

3. PathVariable

在这里插入图片描述
anno.jsp:

<a href="anno/testPathVariable/10">testPathVariable</a>

AnnoAnnoController.java:

    //PathVariable:用于绑定url中的占位符
    @RequestMapping("/testPathVariable/{sid}")
    public String testPathVariable(@PathVariable(name = "sid") String id) {
        System.out.println("执行了。。。");
        System.out.println(id);
        return "success";
    }

在这里插入图片描述

restful 编程风格

  • rest——英文:Representational State Transfer——中文:表现层状态转化
  • HTTP 协议里面,四个表示操作方式的动词: GET、 POST、 PUT、DELETE。它们分别对应四种基本操作: GET 用来获取资源, POST 用来新建资源, PUT 用来更新资源, DELETE 用来删除资源。
  • restful 的实例:
    HTTP GET : /account/1 —— 得到 id = 1 的 account
    HTTP DELETE: /account/1 —— 删除 id = 1 的 account
    HTTP PUT: /account/1 —— 更新 id = 1 的 account
    HTTP POST: /account —— 新增 account
    在这里插入图片描述

4. RequestHeader

在这里插入图片描述
anno.jsp:

<a href="anno/testRequestHeader">testRequestHeader</a>

AnnoController.java:

    //RequestHeader:用于获取请求消息头
    @RequestMapping("/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value = "Accept") String header) {
        System.out.println("执行了。。。");
        System.out.println(header);
        return "success";
    }

5. CookieValue

在这里插入图片描述
anno.jsp:

<a href="anno/testCookieValue">testCookieValue</a>

AnnoController.java:

    //CookieValue:用于获取Cookie的值
    @RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue(value = "JSESSIONID") String cookie) {
        System.out.println("执行了。。。");
        System.out.println(cookie);
        return "success";
    }

6. ModelAttribute

在这里插入图片描述
anno.jsp:

    <form action="anno/testModelAttribute" method="post">
        用户姓名:<input type="text" name="username"><br/>
        用户年龄:<input type="text" name="age"><br/>
        <input type="submit" value="提交">
    </form>

AnnoController.java:

    //ModelAttribute
    @RequestMapping("/testModelAttribute")
    public String testModelAttribute() {
        System.out.println("testModelAttribute执行了。。。");
        return "success";
    }
    @ModelAttribute
    public void showUser(){
        System.out.println("showUser执行了。。。");
    }

在这里插入图片描述

ModelAttribute的应用场景:当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。

① ModelAttribute 修饰的方法无返回值
AnnoController.java:

    //ModelAttribute
    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(@ModelAttribute(value = "abc") User user) {
        System.out.println("testModelAttribute执行了。。。");
        System.out.println(user);
        return "success";
    }

    //该方法会先执行
    //无返回值
    @ModelAttribute
    public void showUser(String uname, Map<String, User> map) {
        System.out.println("showUser执行了。。。");
        //通过用户查询数据库(模拟)
        User user = new User();
        user.setUname(uname);
        user.setAge(20);
        user.setDate(new Date());
        map.put("abc", user);
    }

在这里插入图片描述
② ModelAttribute 修饰的方法带返回值

    //ModelAttribute
    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(User user) {
        System.out.println("testModelAttribute执行了。。。");
        System.out.println(user);
        return "success";
    }

    //该方法会先执行
    //有返回值
    @ModelAttribute
    public User showUser(String uname) {
        System.out.println("showUser执行了。。。");
        //通过用户查询数据库(模拟)
        User user = new User();
        user.setUname(uname);
        user.setAge(20);
        user.setDate(new Date());
        return user;
    }

7. SessionAttribute

在这里插入图片描述
succsee.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Success</title>
</head>
<body>
    <h3>入门成功h3</h3>

    ${ msg }
    ${ sessionScope }
</body>
</html>

anno.jsp:

    <a href="anno/testSessionAttributes">testSessionAttributes</a>
    <a href="anno/getSessionAttributes">getSessionAttributes</a>
    <a href="anno/delSessionAttributes">delSessionAttributes</a>

AnnoController.java:

    //SessionAttributes:用于多次执行控制器方法间的参数共享
    //添加值
    @RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Model model) {
        System.out.println("testSessionAttributes。。。");
        model.addAttribute("msg", "开发");
        return "success";
    }
    //获取值
    @RequestMapping("/getSessionAttributes")
    public String getSessionAttributes(ModelMap modelMap) {
        System.out.println("testSessionAttributes。。。");
        String msg = (String) modelMap.get("msg");
        System.out.println(msg);
        return "success";
    }
    //清除值
    @RequestMapping("/delSessionAttributes")
    public String delSessionAttributes(SessionStatus status) {
        System.out.println("delSessionAttributes。。。");
        status.setComplete();
        return "success";
    }
下载前必看:https://pan.quark.cn/s/a16f11f200be 在建筑工程的范畴内,沟槽开挖是一项至关重要的基础施工技术,其在市政工程、管道铺设以及地基加固等多个领域得到了普遍应用。 本文将聚焦于“沟槽开挖交底”这一核心议题,致力于呈现系统且深入的沟槽开挖知识体系,从而协助相关人员掌握其关键流程、安全规范以及技术精髓。 沟槽开挖的过程中通常包含以下几个核心要素:1. **设计与规划**:在沟槽开挖启动之前,必须依据设计图纸进行周密的施工方案制定,明确沟槽的宽度、深度、长度及形态。 设计工作需综合考量土壤性质、地下水位、周边建筑物的状况等因素,以保障结构稳定性和施工安全性。 2. **土方计算**:依据沟槽的具体尺寸,精确计算需要移除的土方量,以便于科学安排运输和回填作业。 这一环节涉及体积计算方法和土方平衡原理,旨在实现工程成本的合理化控制。 3. **施工方法**:常用的开挖方式包括直壁开挖、放坡开挖、支撑开挖等。 选择何种方法应综合考虑地质条件、工程规模、工期要求以及成本预算等因素。 例如,在软土区域可能需要实施降水和支护措施。 4. **安全措施**:在沟槽开挖的整个过程中,必须严格遵守安全操作规程,包括设置警示标识、安装安全护栏、预防土体滑坡等。 同时,需定期检测边坡的稳定性,迅速应对潜在风险。 5. **地下水控制**:当地下水位较高时,可能需要采取降水措施,例如采用井点降水或轻型井点降水技术,以避免沟槽内部积水,确保作业环境的安全。 6. **环境保护**:在开挖作业中,应注重减轻对周边环境的影响,例如控制施工噪声、减少尘土飘散以及防止水土流失。 此外,应妥善处置挖掘出的土方,防止造成二次污染。 7. **机械设备选择**:根据沟槽的尺寸和地质状况,挑选适...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值