溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMVC的概述及原理介紹

發(fā)布時間:2021-08-19 17:55:10 來源:億速云 閱讀:83 作者:chen 欄目:開發(fā)技術

本篇內(nèi)容介紹了“SpringMVC的概述及原理介紹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

目錄
  • SpringMVC

    • 一,概述

    • 二、原理:

      • 1.創(chuàng)建form表單

      • css代碼

    • 2.準備Student類

      • 3.創(chuàng)建啟動類

        • 4,創(chuàng)建數(shù)據(jù)庫,表

          • 使用JDBC把得到的數(shù)據(jù)入庫

            • 5.創(chuàng)建StudentController類

            • 6.測試

              • 總結

                SpringMVC

                一,概述

                作用是接受服務器請求并做出響應,是spring的后續(xù)產(chǎn)品,使用注解@RestController和@RequestMapping

                MVC設計模式:

                M是model模型,用來封裝數(shù)據(jù)

                V是view視圖,用來展示數(shù)據(jù)

                C是control控制器,用來控制瀏覽器如何請求,做出數(shù)據(jù)響應

                好處:提高代碼的復用性,松耦合

                二、原理:

                1.前端控制器DispatcherServlet:當瀏覽器發(fā)送請求成功后,充當調(diào)度者的角色,負責調(diào)度每個組件

                2.處理器映射器HandlerMapping:根據(jù)請求的url路徑,找到能處理請求的類名和方法名

                Url:http://localhost:8080/abc 在HelloControl類中找到abc()

                3.處理器適配器HandlerAdaptor:正式處理業(yè)務,并返回結果交給DispatcherServlet

                4.視圖解析器ViewResolver:找到正確的能展示數(shù)據(jù)的視圖,準備展示數(shù)據(jù)

                5.視圖渲染view:展示數(shù)據(jù)

                1.創(chuàng)建form表單

                表單form默認提交方式是get,將提交的數(shù)據(jù)展示在網(wǎng)址上,而post提交方式隱藏了數(shù)據(jù)在網(wǎng)址上,因此更加的安全,這里使用springMVC來處理post的請求參數(shù)

                <!DOCTYPE html>
                <html>
                	<head>
                		<meta charset="utf-8">
                		<title>學生管理系統(tǒng)</title>
                		<link rel="stylesheet" href="../css/form.css"/>
                	</head>
                	<body>
                		<!-- 利用表單,向服務器發(fā)送數(shù)據(jù),
                		默認是get提交,通過method屬性修改提交方式
                		 action屬性,指定提交的位置-->
                		<form method="post" action="http://localhost:8080/stu/add">
                			<table width="500px" height="300px">
                				<tr><td><h3>學生信息管理系統(tǒng)MIS</h3></td></tr>
                				<tr><td>姓名:</td></tr>
                				<tr><td><input class="a" type="text" placeholder="請輸入姓名..." name="name" /></td></tr>	
                				<tr><td>年齡:</td></tr>
                				<tr><td><input class="a" type="number" placeholder="請輸入年齡..." name="age"/></td></tr>
                				<tr><td>性別:(單選框)
                					<input type="radio" name="sex" value="1" />男
                					<input type="radio" name="sex" value="0" />女
                				</td></tr>
                				<tr><td>愛好:(多選)
                					<input type="checkbox" name="hobby" value="ppq" />乒乓球
                					<input type="checkbox" name="hobby" value="ps" />爬山
                					<input type="checkbox" name="hobby" value="cg" />唱歌
                				</td></tr>
                				<tr><td>學歷:(下拉框)
                				<select name="edu">
                					<option value="1">本科</option>
                					<option value="2">碩士</option>
                					<option value="3">博士</option>
                					<option value="4">專科</option>
                				</select>
                				</td></tr>
                					<tr><td>入學日期:</td></tr>
                					<tr><td><input type="date" name="intime" /></td></tr>
                					<tr><td>
                						<input type="submit" value="保存"/ >
                						<input type="reset" value="取消" />
                					</td></tr>
                			</table>
                		</form>
                	</body>
                </html>
                css代碼

                css的三種引入方式

                1.行內(nèi)樣式:通過style屬性引入css樣式

                例如:<h2 >行內(nèi)樣式</h2>

                一般實際寫頁面時不提倡,測試的時候可以使用

                2,內(nèi)部樣式表

                通過<style></style>標簽,寫在head標簽中

                例如:<style> .b{ width: 200px; height: 100px; background-color: #FF69B4; } </style>

                3,外部樣式表

                創(chuàng)建.css文件,將css樣式寫入其中,然后在html文件中引入,使用link標簽

                例如:href是css文件路徑

                <link rel="stylesheet" href="../css/form.css"/>`

                我這里使用了外部樣式表的方式,使css代碼和html代碼分離,使結構更加清晰

                /* 輸入框 */
                /* 類選擇器 */
                .a{
                		width: 300px;/*寬度*/
                	    height: 40px;/*高度*/
                		padding: 5px;/*內(nèi)邊距*/
                		font-size: 15px;/*字號*/
                }
                /* 屬性選擇器 */
                /*修飾提交按鈕*/
                input[type="submit"]{
                	    width: 60px;
                	    height: 30px;
                	    background-color: blue; 
                		color: #fff;
                		font-size: 15px;
                		border-color: blue;
                }
                input[type="reset"]{
                		width: 60px;
                		height: 30px;
                		background-color:hotpink; 
                		color: #fff;
                		font-size: 15px;
                		border-color: hotpink;
                }
                body{
                	font-size: 20px;
                }

                SpringMVC的概述及原理介紹

                頁面還可以用css做得更加美觀哦,這里只是為了測試,如果有興趣還可以自己做得更加好看哦~

                2.準備Student類

                package cn.tedu.pojo;
                import org.springframework.format.annotation.DateTimeFormat;
                import java.util.Arrays;
                import java.util.Date;
                //@RequestMapping("find")
                //是Model層,用來封裝數(shù)據(jù),就是一個pojo(封裝的屬性+get/set)
                public class Student {
                    //屬性(成員變量):變量類型 變量名
                    //提交數(shù)據(jù)的類型  頁面上name屬性的值
                //    public Student find(){
                        private String name;
                        private Integer age;//避免一些異常,能用引用類型最好使用引用類型
                        private Integer sex;
                        private String[] hobby;
                        private Integer edu;
                        //瀏覽器上提交的日期默認是2021/8/12默認是String類型
                        //報錯400,需要把String的日期轉成Date日期,使用注解 @DateTimeFormat
                        @DateTimeFormat(pattern = "yyyy-MM-dd")
                        private Date intime;
                //    }
                // 獲取get   set   toString
                    public String getName() {
                        return name;
                    }
                    public void setName(String name) {
                        this.name = name;
                    }
                   public Integer getAge() {
                        return age;
                    }
                    public void setAge(Integer age) {
                        this.age = age;
                    }
                    public Integer getSex() {
                        return sex;
                    }
                    public void setSex(Integer sex) {
                        this.sex = sex;
                    }
                    public String[] getHobby() {
                        return hobby;
                    }
                    public void setHobby(String[] hobby) {
                        this.hobby = hobby;
                    }
                    public Integer getEdu() {
                        return edu;
                    }
                    public void setEdu(Integer edu) {
                        this.edu = edu;
                    }
                    public Date getIntime() {
                        return intime;
                    }
                    public void setIntime(Date intime) {
                        this.intime = intime;
                    }
                    @Override
                    public String toString() {
                        return "Student{" +
                                "name='" + name + '\'' +
                                ", age=" + age +
                                ", sex=" + sex +
                                ", hobby=" + Arrays.toString(hobby) +
                                ", edu=" + edu +
                                ", intime=" + intime +
                                '}';
                    }
                }

                3.創(chuàng)建啟動類

                一般命名為RunApp,位置必須放在所有資源之上的包里

                SpringMVC的概述及原理介紹

                package cn.tedu;
                import org.springframework.boot.SpringApplication;
                import org.springframework.boot.autoconfigure.SpringBootApplication;
                /**這是一個啟動類
                 * 位置:必須在所有資源之上的包里*/
                @SpringBootApplication
                public class RunApp {
                    public static void main(String[] args) {
                        SpringApplication.run(RunApp.class);
                    }
                }

                4,創(chuàng)建數(shù)據(jù)庫,表

                要與Student類相對應,愛好這一字段是數(shù)組類型,而MySQL中沒有數(shù)組類型,因此使用varchar

                注意字符集使用utf-8

                SpringMVC的概述及原理介紹

                使用JDBC把得到的數(shù)據(jù)入庫

                5.創(chuàng)建StudentController類

                首先要在pom.xml中導入jar包(工具包)

                <!--    添加jdbc的jar包依賴-->
                    <dependencies>
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>5.1.48</version>
                        </dependency>
                    </dependencies>

                下面是將數(shù)據(jù)入庫的代碼

                package cn.tedu.controller;
                //是controller層,控制層,用來接受請求和給出響應
                import cn.tedu.pojo.Student;
                import org.springframework.web.bind.annotation.RequestMapping;
                import org.springframework.web.bind.annotation.RestController;
                import java.sql.Connection;
                import java.sql.DriverManager;
                import java.sql.PreparedStatement;
                import java.util.Arrays;
                @RestController
                @RequestMapping("stu")
                public class StudentController {
                    @RequestMapping("add")
                    public Object add(Student s) throws Exception {
                        //實現(xiàn)入庫insert--jdbc
                        //注冊驅動
                        Class.forName("com.mysql.jdbc.Driver");
                        //獲取連接
                        String url = "jdbc:mysql://localhost:3306/cgb2106";
                        Connection conn = DriverManager.getConnection(url, "root", "123456");
                        //SQL骨架
                            String sql = "insert into tb_student values(null,?,?,?,?,?,?)";
                            //獲取傳輸器
                            PreparedStatement ps = conn.prepareStatement(sql);
                            //給SQL設置值
                            ps.setObject(1, s.getName());
                            ps.setObject(2, s.getAge());
                            ps.setObject(3, s.getSex());
                            //s.getHobby())得到一個數(shù)組,不能直接入數(shù)據(jù)庫,需要變成串
                            ps.setObject(4, Arrays.toString(s.getHobby()));
                            ps.setObject(5, s.getEdu());
                            ps.setObject(6, s.getIntime());
                            //執(zhí)行SQL
                            ps.executeUpdate();//執(zhí)行增刪改的SQL
                            System.out.println("數(shù)據(jù)插入成功");
                            return s;
                        }
                    }

                6.測試

                運行啟動類,執(zhí)行前端頁面,提交表單數(shù)據(jù),并在數(shù)據(jù)庫中查看數(shù)據(jù)入庫情況

                SpringMVC的概述及原理介紹

                SpringMVC的概述及原理介紹

                SpringMVC的概述及原理介紹

                SpringMVC的概述及原理介紹

                “SpringMVC的概述及原理介紹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

                向AI問一下細節(jié)

                免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

                AI