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
<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]
- @RequestMapping("view1")
- public ModelAndView view1(ModelAndView mav) {
- mav.setViewName("view1");
- return mav;
- }
- @RequestMapping("view2")
- public String view2() {
- return "view2";
- }
*若要直接往response中寫內容而不經過檢視解析器時可以使用@ResponseBody
不需要建立ModelAndView,直接return需要的內容,jsp(檢視)頁面就可以呼叫這個內容了
[java]
- @RequestMapping("json1")
- @ResponseBody
- public Object view() {
- Map<String, String> map = new HashMap<String, String>();
- map.put("a", "a");
- return map;
- }
要想responseBody返回Json,必須要加入json解析的jar包
[XML]
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.8.7</version>
- </dependency>
加入以上jar包後可以返回json了
responseBody返回的內容不止json一種,還有text,xml和其他,如何控制返回的型別由程式自動選
- 關於ResponseEntity
例項
1)前臺程式碼:
[html]
- <script type="text/javascript" src="JQuery/jquery-3.2.1.js"></script>
[javascript]
- function responseEntity(){
- $.post("${pageContext.request.contextPath}/Test/responseEntity.do",{},function(data){
- alert(data.message);
- });
- }
[html]
- <input id="responseEntityTest" type="button" value="request" onclick="responseEntity()">
2)後臺程式碼:
[java]
- @RequestMapping("/responseEntity.do")
- public ResponseEntity<Map<String,Object>> responseEntity(){
- Map<String,Object> map = new HashMap<String,Object>();
- map.put("message", "Hello Wrold");
- return new ResponseEntity<Map<String,Object>>(map, HttpStatus.OK);
- }
返回實體中,第一個引數為返回的資料,相當於out.write(map.toString()),第二個引數是狀態碼,可以設定返回404,上述設定等價於返回200。這樣直接給jsp頁面返回資料,不需要建立ModelAndView之類的操作了。