SpringMVC注解

SpringMVC注解

@RequestMapping
  1. 在類上:給模塊添加根路徑
  2. 在方法上:方法具體的路徑

屬性:

  • value:默認屬性,value屬性主要指定的是方法被訪問的具體路徑
  • method:可以指定方法對應的請求方式,如果客戶端請求的方式和方法設(shè)置的方式不同,請求不成功(405錯誤)

可以將數(shù)據(jù)存放到request中,也可以將數(shù)據(jù)存放到session中,返回類型是javabean類型,

@RequestMapping("/emps")
    public String getUsersPage(Model model, HttpSession session){

        List<Emp> list = empService.getAllEmps();

        model.addAttribute("list", list);

        session.setAttribute("list",  list);

        return "emp.jsp";
    }
@RequestParam

表單參數(shù)處理的注解

屬性:

  • value屬性:默認屬性,value屬性主要用于方法參數(shù)名和表單參數(shù)名不一致時
  • defaultvalue屬性:如果客戶端沒有在請求傳參,那么我們將得到null,我們不 希望得到null,希望得到一個默認值,這個時候,我們還需要使用@RequestParam defaultValue屬性進行對應的設(shè)置。
@GetMapping("/deleteById/{id}")

傳單個值的參數(shù)

獲取值

public String deleteByEid(@PathVariable int eid){}
@PostMapping("/***")
能夠接收表單參數(shù),要求表單的name于bean成員變量一致
@PostMapping("/updateEmp")
public String updateEmp(Emp e){

        //System.out.println(request.getParameter("eid"));
        System.out.println(e);

        boolean flag = empService.updateEmp(e);

        if(flag){
            return "redirect:/emp/emps";
        }

        return "";
    }

校驗與國際化

添加一個配置文件,此文件的效果是前天出現(xiàn)輸入錯誤時,錯誤信息會根據(jù)不同的語言進行表達,文件名已msg開頭、語言居中、國家簡寫在后

msg_en_US.properties

emp.eid=the eid of employee cannot be empty.
emp.name=the name of employee cannot be empty.
emp.salary=the salary of employee cannot be empty.
emp.salary.invalidate=the salary of employee cannot be negative.

在spring配置文件中添加,id必須為messageSource

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="/WEB-INF/msg" />
    </bean>

添加一個實現(xiàn)Validator的類,里面包含兩個方法,supports和validate,supports方法的意思是當前類用來對于哪個類實現(xiàn)校驗,Emp.class.isAssignableFrom(clazz);意思是完成對與Emp類的校驗,validate方法,完成真正的校驗,一定是滿足了supports方法之后才會進入該方法來進行校驗

public class EmpValidate implements Validator {

    /**
     * 指定當前類是否支持指定類型的校驗
     * @param clazz
     * @return
     */
    @Override
    public boolean supports(Class<?> clazz) {
        return Emp.class.isAssignableFrom(clazz);
    }

    /**
     * 真正的校驗方法
     * @param target,校驗對象
     * @param errors,存儲錯誤信息
     */
    @Override
    public void validate(Object target, Errors errors) {
        Emp e = (Emp) target;

        /**
         *
         * 非空校驗
         *
         * 使用ValidationUtils工具類來實現(xiàn)對于某些非空字段的校驗,該方法包含三個參數(shù):
         *      1.  錯誤對象,用來收集并存儲錯誤信息
         *      2.  要校驗的字段
         *      3.  錯誤碼,在msg配置文件中配置的key信息
         */
        ValidationUtils.rejectIfEmpty(errors, "eid", "emp.eid");
        ValidationUtils.rejectIfEmpty(errors, "name", "emp.name");
        ValidationUtils.rejectIfEmpty(errors, "salary", "emp.salary");

        double salary = e.getSalary();

        /**
         *  合法性校驗,使用errors對象的rejectValue()方法完成合法性校驗,里面包含了兩個參數(shù)
         *
         *      1. field,在哪個字段上完成校驗
         *      2.  錯誤碼,會在msg文件中找到該key對應的錯誤信息
         */

        if(salary < 0){
            errors.rejectValue("salary", "emp.salary.invalidate");
        }
    }

在這個方法中創(chuàng)建了一個EmplooyeeValidate對象用于進行校驗,這個方法接收三個參數(shù),第一個參數(shù)是前臺頁面?zhèn)鬟^來的,第二個參數(shù)類型是一個接口,繼承于Errors,用于保存錯誤信息,第三個參數(shù)用于向request域中添加屬性。

@PostMapping("/saveEmp")
    public String saveEmp(Emp e, BindingResult errors, Model model){

        /**
         *  調(diào)用自己寫好的校驗類來完成對于Emp對象的校驗
         */
        EmpValidate ev = new EmpValidate();

        ev.validate(e, errors);

        if(errors.hasErrors()){
            model.addAttribute("emp", e);
            return "saveEmp.jsp";
        }

        return "redirect:/emp/emps";
    }

頁面上也需添加錯誤信息的標簽,先需要導入標簽,然后使用

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="f" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%--<form action="" method="post">
        eid:<input type="text" name="eid" />
    </form>--%>

    <f:form method="post" action="/emp/saveEmp" commandName="emp">
        eid:<f:input path="eid" /><font color="red"><f:errors path="eid" /></font> <br>
        name:<f:input path="name" /><font color="red"> <f:errors path="name" /></font><br>
        salary:<f:input path="salary" /><font color="red"> <f:errors path="salary" /></font><br>
        <input type="submit" value="submit" /> <br>
    </f:form>
</body>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容