欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC的常見數據綁定實戰(zhàn)舉例(以登錄為例演練)

 更新時間:2025年09月20日 11:46:15   作者:安清h  
文章以登錄功能為例,詳解SpringMVC的數據綁定機制,涵蓋簡單類型、POJO、自定義轉換器(如Date和Signon)、數組及集合類型等場景,通過Signon類和相關控制器方法演示如何處理不同數據類型的綁定與驗證,感興趣的朋友跟隨小編一起看看吧

??SpringMVC的簡單數據綁定

下面將會以登錄為例演練并介紹各種類型的數據綁定,以Signon類為例:

??創(chuàng)建Signon類

定義一個名為 Signon 的Java類,用于存儲用戶名和密碼,并提供了這兩個變量的公共getter和setter方法。具體代碼如下:

public class Signon {
    String uname1;
    String pwd;
    public String getUname1() {
        return uname1;
    }
    public void setUname1(String uname1) {
        this.uname1 = uname1;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}

??創(chuàng)建SignonDao接口

定義一個名為 SignonDao 的Java接口,其中包含一個公共方法 findSignonByUnameAndPwd。具體代碼如下:

public interface SignonDao {
    public int findSignonByUnameAndPwd(String uname,String pwd);
}

??創(chuàng)建SignonDaoImp類

定義一個名為 SignonDaoImp 的Java類,它實現了 SignonDao 接口,并使用 @Repository 注解標記為Spring框架中的持久層組件。這個類提供了 findSignonByUnameAndPwd 方法的具體實現,該方法接收用戶名(uname)和密碼(pwd)作為參數,并檢查它們是否與預設的值("tom"和"12345")相匹配。如果匹配,方法返回1,表示用戶驗證成功;如果不匹配,方法返回0,表示用戶驗證失敗。具體代碼如下:

public class SignonDaoImp implements SignonDao {
    @Override
    public int findSignonByUnameAndPwd(String uname, String pwd) {
        if ("tom".equals(uname) && "12345".equals(pwd))
            return 1;
        return 0;
    }
}

??創(chuàng)建SignonService接口

定義一個名為 SignonService 的Java接口,其中包含一個公共方法 checkByUnameAndPwd。具體代碼如下:

public interface SignonService {
    public boolean checkByUnameAndPwd(String uname,String pwd);
}

??創(chuàng)建SignonServiceImp類

定義一個名為 SignonServiceImp 的Java類,它實現了 SignonService 接口,并使用 @Service 注解標記為Spring框架中的服務層組件。類中注入了一個 SignonDao 類型的成員變量 sd,用于訪問數據訪問層。SignonServiceImp 類實現了 checkByUnameAndPwd 方法,該方法接收用戶名和密碼作為參數,并調用 sdfindSignonByUnameAndPwd 方法來檢查數據庫中是否存在匹配的用戶記錄。如果 findSignonByUnameAndPwd 方法返回1,表示驗證成功,checkByUnameAndPwd 方法返回 true;否則返回 false,表示驗證失敗。具體代碼如下:

@Service
public class SignonServiceImp implements SignonService{
    @Autowired
    SignonDao sd;
    @Override
    public boolean checkByUnameAndPwd(String uname, String pwd) {
        if(sd.findSignonByUnameAndPwd(uname,pwd)==1)
            return true;
        return false;
    }
}

??創(chuàng)建web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/"/>
    <property name="suffix" value=".jsp"/>
</bean>
    <bean name="/firsttest" class="FirstController"/>
    <context:component-scan base-package="com.hkd"/>
</beans>

 以上內容為下面統(tǒng)一會用到的,下面內容主要為login登錄頁面和測試類。

??默認類型數據綁定

?創(chuàng)建控制器類LoginController

使用Spring框架的Java Web應用程序中的控制器類`LoginController`,它負責處理用戶登錄請求。類中注入了一個名為`SignonService`的自動裝配服務,該服務包含驗證用戶憑據的方法。`LoginController`類中的`login1`方法通過`@RequestMapping("/login1")`注解映射到`/login1`的HTTP請求。該方法接收一個`HttpServletRequest`對象和一個`Model`對象作為參數,從請求中獲取用戶名和密碼,然后調用`SignonService`的`checkByUnameAndPwd`方法來驗證這些憑據。如果驗證成功,方法會將用戶名和密碼添加到模型中,并返回視圖名稱`"welcome"`;如果驗證失敗,則返回視圖名稱`"error"`。

@Controller
public class LoginController {
    @Autowired
    SignonService ss;
    @RequestMapping("/login1")
    public String login1(HttpServletRequest request, Model model){
        String uname=request.getParameter("uname");
        String pwd=request.getParameter("pwd");
        boolean flag=ss.checkByUnameAndPwd(uname,pwd);
        if(flag){
            model.addAttribute("uname",uname);
            model.addAttribute("pwd",pwd);
            return "welcome";
        }else{
            return "error";
        }
    }
}

?創(chuàng)建登錄頁面login1.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form method="post" action="login1">
    用戶名:<input type="text" name="uname">
    密碼:<input type="text" name="pwd">
    <input type="submit" value="提交"><input type="reset" value="重置">
</form>
</body>
</html>

輸入正確的用戶名和密碼后跳轉到的界面如下:

??簡單數據類型綁定

?創(chuàng)建控制器類LoginController

在控制器LoginController類中創(chuàng)建login2方法:

    @RequestMapping("/login2")
    public String login2(String uname,String pwd,Model model){
        boolean flag=ss.checkByUnameAndPwd(uname, pwd);
        if(flag){
            model.addAttribute("uname",uname);
            model.addAttribute("pwd",pwd);
            return "welcome";
        }else{
            return "error";
        }
    }

?創(chuàng)建登錄頁面login2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form method="post" action="login2">
    用戶名:<input type="text" name="uname">

    密碼:<input type="text" name="pwd">

    <input type="submit" value="提交"><input type="reset" value="重置">
</form>
</body>
</html>

登錄成功之后頁面和上面一樣。

??POJO綁定

?創(chuàng)建控制器類LoginController

定義`LoginController`類中的`login3`方法,它通過`@RequestMapping("/login3")`注解映射到`/login3`的HTTP請求。該方法接收一個`Signon`對象和一個`Model`對象作為參數,使用`Signon`對象中的用戶名和密碼調用`ss.checkByUnameAndPwd`方法進行驗證。如果驗證成功,將用戶名和密碼添加到模型中并返回`"welcome"`視圖;如果驗證失敗,則返回`"error"`視圖。

    @RequestMapping("/login3")
    public String login3(Signon signon,Model model){
        boolean flag=ss.checkByUnameAndPwd(signon.getUname(),signon.getPwd());
        if(flag){
            model.addAttribute("uname",signon.getUname());
            model.addAttribute("pwd",signon.getPwd());
            return "welcome";
        }else{
            return "error";
        }

?創(chuàng)建登錄頁面login3.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="login3" method="post">
    用戶名:<input type="text" name="uname">

    密碼:<input type="password" name="pwd">

    <input type="submit" value="提交"><input type="reset" value="重置">
</form>
</body>
</html>

??自定義類型轉換器

第一種以Date為例:

?創(chuàng)建DateConvert類

定義一個名為`DateConvert`的類,它實現了`Converter<String, Date>`接口,用于將字符串轉換為`Date`對象。在`convert`方法中,它使用`SimpleDateFormat`類以"yyyy-MM-dd"格式解析傳入的字符串參數`source`。如果解析成功,返回對應的`Date`對象;如果解析失敗,拋出`ParseException`,并由`catch`塊捕獲后拋出一個`RuntimeException`。

public class DateConvert implements Converter<String,Date>{
    public Date convert(String source){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date date=null;
        try {
            date=sdf.parse(source);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        return date;
    }
}

?修改spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans.xsd 
           http://www.springframework.org/schema/aop 
           http://www.springframework.org/schema/aop/spring-aop.xsd 
           http://www.springframework.org/schema/context 
           https://www.springframework.org/schema/context/spring-context.xsd 
           http://www.springframework.org/schema/mvc 
           http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--        配置Spring MVC要掃描的包-->
<context:component-scan base-package="com.hkd"/>
    <!--    配置視圖解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--  前綴  -->
        <property name="prefix" value="/WEB-INF/"/>
        <!--  后綴  -->
        <property name="suffix" value=".jsp"/>
    </bean>
    <bean id="DateConvert" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.hkd.DateConvert"/>
            </set>
        </property>
    </bean>
<!--    <mvc:annotation-driven conversion-service="DateConvert"/>-->
<mvc:annotation-driven conversion-service="DateConvert"/>
</beans>

?創(chuàng)建控制器類LoginController

    @RequestMapping("/login4")
    public String login4(int age, @DateTimeFormat(pattern = "yyyy-MM-dd") Date birthday){
        System.out.println(birthday);
        System.out.println(age);
        return "welcome";
    }

?創(chuàng)建登錄頁面login4.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="login4" method="post">
    年齡:<input type="text" name="age">
    生日:<input type="text" name="birthday">
    <input type="submit" value="提交"> <input type="reset" value="重置">
</form>
</body>
</html>

第二種以Signon為例:

??創(chuàng)建SignonConvert類

定義一個名為`SignonConvert`的類,它實現了`Converter<String, Signon>`接口,用于將一個包含用戶名和密碼(以逗號分隔)的字符串轉換為一個`Signon`對象。在`convert`方法中,使用`StringTokenizer`對輸入字符串進行分割,提取出用戶名和密碼,然后創(chuàng)建一個新的`Signon`實例并設置這些屬性,最后返回這個`Signon`對象。

public class SignonConvert implements Converter<String,Signon>{
    public Signon convert(String source){
        StringTokenizer st=new StringTokenizer(source,",");
        String uname=st.nextToken();
        String pwd=st.nextToken();
        Signon signon=new Signon();
        signon.setUname(uname);
        signon.setPwd(pwd);
        return signon;
    }
}

??修改spring-mvc.xml類

在文件spring-mvc.xml中添加如下代碼:

    <bean id="SignonConvert" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.hkd.SignonConvert"/>
            </set>
        </property>
    </bean>
    <mvc:annotation-driven conversion-service="SignonConvert"/>

??創(chuàng)建控制器類LoginController

    @RequestMapping("/login5")
    public String login6(Signon signon){
        System.out.println(signon.getUname()+","+signon.getPwd());
        return "welcome";
    }

??創(chuàng)建登錄頁面login5.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="login5" method="post">
        用戶信息(用戶名,密碼之間以逗號隔開):<input type="text" name="signon">
        <input type="submit" value="提交"><input type="reset" value="重置">
    </form>
</body>
</html>

??數組類型

?創(chuàng)建控制器類LoginController

定義一個名為`login6`的方法,它通過`@RequestMapping("/login6")`注解映射到`/login6`的HTTP請求。該方法接收一個名為`uname`的字符串數組作為參數,并遍歷數組中的每個字符串,將它們打印到控制臺。無論數組內容如何,最終方法都會返回`"welcome"`視圖。

    @RequestMapping("/login6")
    public String login6(String uname[]){
        for(String str:uname){
            System.out.println(str);
        }
        return "welcome";
    }
}

?創(chuàng)建登錄頁面login6.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="login6" method="post">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    <input type="submit" value="提交"><input type="reset" value="重置">
</form>
</body>
</html>

??集合類型

?創(chuàng)建控制器類LoginController

定義一個名為`login7`的Spring MVC控制器方法,它通過`@RequestMapping("/login7")`注解映射到`/login7`的HTTP請求。該方法接收一個名為`uname`的`List<String>`類型的請求參數,表示用戶名列表,并將這些用戶名打印到控制臺。隨后,它將用戶名列表添加到模型中,以便在視圖中使用,并最終返回名為`"welcome8"`的視圖。

    @RequestMapping("/login7")
    public String login7(@RequestParam("uname")List<String> uname,Model model){
        for(String str:uname){
            System.out.println(str);
        }
        model.addAttribute("uname",uname);
        return "welcome8";
    }

?創(chuàng)建登錄頁面login6.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="login7" method="post">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    <input type="submit" value="提交"><input type="reset" value="重置">
</form>
</body>
</html>

?創(chuàng)建welcome8.jsp頁面

<c:forEach item="${uname}" var="data">:這個標簽開始一個循環(huán),它告訴JSP頁面遍歷uname集合中的每個元素。item屬性指定了要遍歷的集合,var屬性定義了在循環(huán)體內代表當前元素的變量名(在這里是data)。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<c:forEach items="${uname}" var="data">
    ${data}
</c:forEach>
</body>
</html>

在框內輸入以下內容:

跳轉后的頁面為:

??將集合類型數據作為POJO類的數據成員

?創(chuàng)建User類

public class User {
    List<String> uname;
    public List<String> getUname() {
        return uname;
    }
    public void setUname(List<String> uname) {
        this.uname = uname;
    }
}

?創(chuàng)建控制器類LoginController

定義一個名為`login8`的Spring MVC控制器方法,它通過`@RequestMapping("/login8")`注解映射到`/login8`的HTTP請求。該方法接收一個`User`類型的參數`user`,假設`User`類有一個`getUname`方法返回一個`String`集合。方法中遍歷這個集合,將每個用戶名打印到控制臺,然后返回`"welcome"`視圖。

    @RequestMapping("/login8")
    public String login8(User user){
        for(String str: user.getUname()){
            System.out.println(str);
        }
        return "welcome";
    }

?創(chuàng)建登錄頁面login8.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="login8" method="post">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    用戶1<input type="text" name="uname">
    <input type="submit" value="提交"><input type="reset" value="重置">
</form>
</body>
</html>

以上就是本期介紹的全部內容了,主要是關于數據綁定。如果您感興趣的話,可以訂閱我的相關專欄。非常感謝您的閱讀,如果這篇文章對您有幫助,那將是我的榮幸。我們下期再見啦??!

到此這篇關于SpringMVC的常見數據綁定的文章就介紹到這了,更多相關SpringMVC數據綁定內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java中return語句的幾種用法舉例

    java中return語句的幾種用法舉例

    這篇文章主要介紹了Java中return語句的使用,包括有返回值類型的方法、提前返回、返回對象以及方法返回類型為void的情況,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • Java操作MinIO實現文件的上傳和刪除

    Java操作MinIO實現文件的上傳和刪除

    本文主要介紹如何將本地Java項目resources目錄下的一個PNG圖片上傳到MinIO,然后將上傳的圖片刪除,文中有詳細的流程步驟和示例代碼,需要的朋友可以參考下
    2023-06-06
  • java中的靜態(tài)代碼塊、構造代碼塊、構造方法詳解

    java中的靜態(tài)代碼塊、構造代碼塊、構造方法詳解

    下面小編就為大家?guī)硪黄猨ava中的靜態(tài)代碼塊、構造代碼塊、構造方法詳解。小編覺得挺好的,現在分享給大家。給大家一個參考。一起跟隨小編過來看看吧
    2016-03-03
  • java中int轉string與string轉int的效率對比

    java中int轉string與string轉int的效率對比

    這篇文章主要介紹了java中int轉string與string轉int的效率對比,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring創(chuàng)建Bean的生命周期詳析

    Spring創(chuàng)建Bean的生命周期詳析

    這篇文章主要介紹了Spring創(chuàng)建Bean的生命周期詳析,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 當事務Transactional遇見異步線程出現的坑及解決

    當事務Transactional遇見異步線程出現的坑及解決

    這篇文章主要介紹了當事務Transactional遇見異步線程出現的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 關于Java中配置ElasticSearch集群環(huán)境賬號密碼的問題

    關于Java中配置ElasticSearch集群環(huán)境賬號密碼的問題

    這篇文章主要介紹了Java中配置ElasticSearch集群環(huán)境賬號密碼的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • JAVA簡單實現MD5注冊登錄加密實例代碼

    JAVA簡單實現MD5注冊登錄加密實例代碼

    本篇文章主要介紹了JAVA簡單實現MD5注冊登錄加密實例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • RestTemplate Get請求實現bean參數傳遞詳解

    RestTemplate Get請求實現bean參數傳遞詳解

    RestTemplate 是從 Spring3.0 開始支持的一個 HTTP 請求工具,也有的稱之為網絡框架,說白了就是Java版本的一個postman,這篇文章主要介紹了詳解RestTemplate 用法,需要的朋友可以參考下
    2022-11-11
  • Mybatis實現一對一查詢映射處理

    Mybatis實現一對一查詢映射處理

    MyBatis是一種流行的Java持久化框架,它提供了靈活而強大的查詢映射功能,本文主要介紹了Mybatis實現一對一查詢映射處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08

最新評論