1. 程式人生 > >SSM框架學習總結

SSM框架學習總結

  • Ssm所有相關jar包,包括mybatis,spring,mybatis-spring,資料庫的。
  • 相關檔案配置

①mybatis的核心配置檔案mybatis.xml(用到通用Mapper的話在這裡配置)

·xml內容:配置pojo別名

<configuration>

<typeAliases>

<package  name=cn.itcast.ssm.pojo>

</typeAliases>

</configuration>

*說明:設定pojo包名後,pojo的別名就是類名了。

·同步操作:建立pojo包

②spring配置檔案applicationContext-dao.xml

·xml內容:1.掃描db.properties檔案;2.連線池配置;3.mybatis工廠建立;4.掃描Mapper包。

<!-- 掃描db.properties檔案 -->

<context:property-placeholder location=classpath:db.properties>

<!-- 資料庫連線池配置 -->

<bean id=dataSource class=com.jolbox.bonecp.BoneCPDataSource>

<property name=driverClassName

 value=${jdbc.driverClassName}/>

<property name=url value=${jdbc.url}/>

<property name=username value=${jdbc.username}/>

<property name=password value=${jdbc.password}/>

</bean>

<!-- SqlSessionFactory的例項化 -->

<bean class=org.mybatis.spring.SqlSessionFactoryBean

>

<!-- 注入連線池 -->

<property name=dataSource ref=dataSource/>

<!-- 載入mybatis的核心配置檔案 -->

<property name=configLocation value=classpath=mybatis.xml/>

</bean>

<!-- 掃描Mapper -->

<bean class=org.mybatis.spring.mapper.MapperScannerConfigurer>

<property name=basePackage value=classpath=cn.itcast.ssm.mapper/>

</bean>

·同步操作:建立db.properties檔案;建立cn.itcast.ssm.mapper包

③spring的配置檔案applicationContext-service.xml

·xml內容:掃描service包

<!-- 掃描serivce包-->

<context:component-scan base-package=”cn.itcast.ssm.service”/>

·同步操作:建立cn.itcast.ssm.service包

④springmvc的配置檔案springmvc.xml

·xml內容:1.配置controller掃描 2.配置三大元件(對映器、介面卡使用註解驅動。檢視解析器bean,設定jsp前後綴)

<!-- 掃描controller -->

<context:component-scan base-package=cn.itcast.ssm.controller/>

<!-- 三大元件 -->

<!-- 處理器對映器和介面卡 -->

<mvc:annotation-driven/>

<!-- 檢視解析器 -->

<bean class=org.springframework.web.servlet.view.InternalResourceViewResolver>

<property name=prefix value=WEB-INF/jsp/>

<property name=suffix value=.jsp/>

</bean>

·同步操作:建立cn.itcast.ssm.controller包

⑤配置web.xml

·xml內容:1.配置spring; 2.配置監聽器讀取spring配置; 3.配置springmvc前端控制器

·其他操作:插入log4j.properties檔案

<!-- 配置spring -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:application-*.xml</param-value>

</context-param>

<!-- 配置監聽器讀取spring配置 -->

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<!-- 配置springmvc前端控制器 -->

<servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatchServlet

</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:springmvc.xml</param-value>

</init-param>

<!-- 啟動web容器就啟動springmvc -->

<load-on-startup>1</load-on-startup>

</servlet>

<!-- url攔截設定,以.action結尾的url 進入springmvc-->

<servlet-mapping>

<servlet-name>springmvc</servlet-name>

<url-pattern>*.action</url-pattern>

</servlet-mapping>

  • 需要留意:

·mybatis工廠需要---配置連線池和載入mybatis.xml

·掃描mapper的包是通過建立bean來實現的,而掃描servlet和controller是通過標籤<context:component-scan base-package=””/>來實現的。

·監聽器為ContextLoaderListener

·前端控制器servlet實現需要設定<init-param>載入配置檔案springmvc.xml,name值為contextConfigLocation

  • 關於@ResponseBody標籤

*返回檢視(ModelAndView)的寫法,通過檢視解析器解析後檢視jsp呼叫方法中的引數

[java] 

  1. @RequestMapping("view1")  
  2. public ModelAndView view1(ModelAndView mav) {  
  3.     mav.setViewName("view1");  
  4.     return mav;  
  5. }  
  6. @RequestMapping("view2")  
  7. public String view2() {  
  8.     return "view2";  
  9. }  


*若要直接往response中寫內容而不經過檢視解析器時可以使用@ResponseBody

不需要建立ModelAndView,直接return需要的內容,jsp(檢視)頁面就可以呼叫這個內容了

[java] 

  1. @RequestMapping("json1")  
  2. @ResponseBody  
  3. public Object view() {  
  4.     Map<String, String> map = new HashMap<String, String>();  
  5.     map.put("a", "a");  
  6.     return map;  
  7. }  


要想responseBody返回Json,必須要加入json解析的jar包

[XML] 

  1. <dependency>  
  2.   <groupId>com.fasterxml.jackson.core</groupId>  
  3.   <artifactId>jackson-databind</artifactId>  
  4.   <version>2.8.7</version>  
  5. </dependency>  


加入以上jar包後可以返回json了

responseBody返回的內容不止json一種,還有text,xml和其他,如何控制返回的型別由程式自動選

  • 關於ResponseEntity

例項

1)前臺程式碼:

[html]  

  1. <script type="text/javascript" src="JQuery/jquery-3.2.1.js"></script>  

[javascript] 

  1. function responseEntity(){  
  2.     $.post("${pageContext.request.contextPath}/Test/responseEntity.do",{},function(data){  
  3.         alert(data.message);  
  4.     });  
  5. }  

[html]

  1. <input id="responseEntityTest" type="button" value="request" onclick="responseEntity()">  

2)後臺程式碼: 

[java] 

  1. @RequestMapping("/responseEntity.do")  
  2. public ResponseEntity<Map<String,Object>> responseEntity(){  
  3.     Map<String,Object> map = new HashMap<String,Object>();  
  4.     map.put("message", "Hello Wrold");  
  5.     return new ResponseEntity<Map<String,Object>>(map, HttpStatus.OK);  
  6. }  

返回實體中,第一個引數為返回的資料,相當於out.write(map.toString()),第二個引數是狀態碼,可以設定返回404,上述設定等價於返回200。這樣直接給jsp頁面返回資料,不需要建立ModelAndView之類的操作了。