日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

java元婴期(29)----java进阶(springmvc(3)---springmvc和mybatis整合参数绑定(上))

發布時間:2025/3/21 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java元婴期(29)----java进阶(springmvc(3)---springmvc和mybatis整合参数绑定(上)) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

springmvc和mybatis整合

需求

使用springmvc和mybatis完成商品列表查詢。

整合思路

springmvc+mybaits的系統架構:

第一步:整合dao層

???????? mybatis和spring整合,通過spring管理mapper接口。

???????? 使用mapper的掃描器自動掃描mapper接口在spring中進行注冊。

第二步:整合service層

???????? 通過spring管理 service接口。

???????? 使用配置方式將service接口配置在spring配置文件中。

???????? 實現事務控制。

第三步:整合springmvc

???????? 由于springmvc是spring的模塊,不需要整合

準備環境

數據庫環境:mysql5.1

java環境:

jdk1.7.0_72

eclipse indigo

springmvc版本:spring3.2

所需要的jar包:

  • 數據庫驅動包:mysql5.1
  • mybatis的jar包
  • mybatis和spring整合包
  • log4j包
  • dbcp數據庫連接池包
  • spring3.2所有jar包
  • jstl包

參考:

工程結構:

整合dao

mybatis和spring進行整合。

sqlMapConfig.xml

mybatis自己的配置文件。???????

applicationContext-dao.xml

配置:

數據源

SqlSessionFactory

mapper掃描器

?

?

逆向工程生成po類及mapper(單表增刪改查)

將生成的文件拷貝至工程中。

手動定義商品查詢mapper

針對綜合查詢mapper,一般情況會有關聯查詢,建議自定義mapper

ItemsMapperCustom.xml

sql語句:

???????? SELECT * FROM items? WHERE items.name LIKE '%筆記本%'

ItemsMapperCustom.java

整合service

在spring容器配置service(applicationContext-service.xml)

創建applicationContext-service.xml,文件中配置service???????

事務控制(applicationContext-transaction.xml)

在applicationContext-transaction.xml中使用spring聲明式事務控制方法。???????

整合springmvc

springmvc.xml

創建springmvc.xml文件,配置處理器映射器、適配器、視圖解析器

<!-- 可以掃描controller、service、...這里讓掃描controller,指定controller的包--><context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan><!--注解映射器 --><!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> --><!--注解適配器 --><!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> --><!-- 使用 mvc:annotation-driven代替上邊注解映射器和注解適配器配置mvc:annotation-driven默認加載很多的參數綁定方法,比如json轉換解析器就默認加載了,如果使用mvc:annotation-driven不用配置上邊的RequestMappingHandlerMapping和RequestMappingHandlerAdapter實際開發時使用mvc:annotation-driven--><mvc:annotation-driven></mvc:annotation-driven><!-- 視圖解析器解析jsp解析,默認使用jstl標簽,classpath下的得有jstl的包--><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 配置jsp路徑的前綴 --><property name="prefix" value="/WEB-INF/jsp/"/><!-- 配置jsp路徑的后綴 --><property name="suffix" value=".jsp"/></bean>

?

?

配置前端控制器

參考上一節入門程序中web.xml的配置。

編寫Controller???????

編寫jsp

加載spring容器

將mapper、service、controller加載到spring容器中。???????

建議使用通配符加載上邊的配置文件。

在web.xml中,添加spring容器監聽器,加載spring容器。

?

?

?

@RequestMapping(重點)

  • url映射

定義controller方法對應的url,進行處理器映射使用。

  • 窄化請求映射

  • 限制http請求方法

出于安全性考慮,對http的鏈接進行方法限制。

如果限制請求為post方法,進行get請求,報錯:

controller方法的返回值(重點)

  • 返回ModelAndView

需要方法結束時,定義ModelAndView,將model和view分別進行設置。

  • 返回string

如果controller方法返回string,表示返回邏輯視圖名

真正視圖(jsp路徑)=前綴+邏輯視圖名+后綴

redirect重定向

商品修改提交后,重定向到商品查詢列表。

redirect重定向特點:瀏覽器地址欄中的url會變化。修改提交的request數據無法傳到重定向的地址。因為重定向后重新進行request(request無法共享)

forward頁面轉發

通過forward進行頁面轉發,瀏覽器地址欄url不變,request可以共享。

  • 返回void

在controller方法形參上可以定義request和response,使用request或response指定響應結果:

1、使用request轉向頁面,如下:

request.getRequestDispatcher("頁面路徑").forward(request, response);

2、也可以通過response頁面重定向:

response.sendRedirect("url")

3、也可以通過response指定響應結果,例如響應json數據如下:

response.setCharacterEncoding("utf-8");

response.setContentType("application/json;charset=utf-8");

response.getWriter().write("json串");

?

?

參數綁定

spring參數綁定過程

從客戶端請求key/value數據,經過參數綁定,將key/value數據綁定到controller方法的形參上。

springmvc中,接收頁面提交的數據是通過方法形參來接收。而不是在controller類定義成員變更接收!!!!

默認支持的類型

直接在controller方法形參上定義下邊類型的對象,就可以使用這些對象。在參數綁定過程中,如果遇到下邊類型直接進行綁定。

  • ???????HttpServletRequest

通過request對象獲取請求信息

  • HttpServletResponse

通過response處理響應信息

  • HttpSession

通過session對象得到session中存放的對象

  • Model/ModelMap

model是一個接口,modelMap是一個接口實現 。

作用:將model數據填充到request域。

簡單類型

通過@RequestParam對簡單類型的參數進行綁定。

如果不使用@RequestParam,要求request傳入參數名稱和controller方法的形參名稱一致,方可綁定成功

如果使用@RequestParam,不用限制request傳入參數名稱和controller方法的形參名稱一致。

通過required屬性指定參數是否必須要傳入,如果設置為true,沒有傳入參數,報下邊錯誤:

pojo綁定

頁面中input的name和controller的pojo形參中的屬性名稱一致,將頁面中數據綁定到pojo對應的屬性。???????

頁面定義:???????

?

controller的pojo形參的定義:

需要說明的是:簡單類型的參數綁定和pojo參數綁定互不影響。???????

自定義參數綁定實現日期類型綁定

對于controller形參中pojo對象,如果屬性中有日期類型,需要自定義參數綁定。

將請求日期數據串傳成 日期類型,要轉換的日期類型和pojo中日期屬性的類型保持一致。

配置方式

?

springmvc和struts2的區別(補充內容)

1、springmvc基于方法開發的,struts2基于類開發的。

springmvc將url和controller方法映射。映射成功后springmvc生成一個Handler對象,對象中只包括了一個method。

方法執行結束,形參數據銷毀。springmvc的controller開發類似service開發。

?

2、springmvc可以進行單例開發,并且建議使用單例開發,struts2通過類的成員變量接收參數,無法使用單例,只能使用多例。(原因就是第一句)

?

3、經過實際測試,struts2速度慢,在于使用struts標簽,如果使用struts建議使用jstl。

?

post亂碼

在web.xml添加post亂碼filter(servlet篇的知識)

在web.xml中加入:???????

<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

以上可以解決post請求亂碼問題。

對于get請求中文參數出現亂碼解決方法有兩個:

修改tomcat配置文件添加編碼與工程編碼一致,如下:

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

另外一種方法對參數進行重新編碼:

String userName new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

ISO8859-1是tomcat默認編碼,需要將tomcat編碼后的內容按utf-8編碼???????

總結

以上是生活随笔為你收集整理的java元婴期(29)----java进阶(springmvc(3)---springmvc和mybatis整合参数绑定(上))的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。