1. 如何實現Spring MVC國際化的設置
一、基於瀏覽器語言的國際化配置 使用Spring的MVC,並且配置中有配置Resource文件 Xml代碼 以下是引用片段: 其中,message-info是你的properties文件的通用名。如:我的配置文件叫 message-info.properties,message-info_zh_CN.properties等等,只要有了這個配置,然後配置jsP 渲染器為JSTL支持的,那麼在你的JSP文件中使用fmt標記就可以實現客戶瀏覽器語言國際化了。 如: 以下是引用片段: 其中的info.login.title和你的資源文件對應. 另外一種方式是使用spring自帶的標簽顯示國際化信息,如: 以下是引用片段:
"/>
二、基於動態載入的國際化配置 1、基於請求的國際化配置 基於請求的國際化配置是指,在當前請求內,國際化配置生效,否則自動以瀏覽器為主。 配置方式如下: 首先配置攔截器 以下是引用片段: 這個配置呢,是不論請求級別的國際化,還是Cookie級別的國際化,再或者Session級別的國際化,都必需有配置這個攔截器,否則會不能使用。 配好上面的攔截器之後,就將攔截器注入到你的UrlHandlerMapping中,例如: Xml代碼 以下是引用片段: 1 這個時候,但凡有了符合UrlMapping的請求,就會被攔截,並且開始配置國際化參數 以下是引用片段: 默認的參數名為locale主意大小寫。裡面放的就是你的提交參數。如:en_US,zh_CN之類的,這個時候,你在頁面上加一句簡體中文 如果你的資源中,飽含建議中文的配置,那麼就會變成你確定的簡體中文拉。 2、基於Session的國際化配置 攔截器和基於請求的相同 Session的配置如下: 以下是引用片段: 在你的處理的Controller中,將提交上來的locale欄位信息生成真正的Locale對象,然後將對象保存在Session中,默認保存的ID是SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME 這樣,當你的Session不過期,那麼語言種類始終保持正確的說。我一直是這樣子用的,我覺得還是Session的好,老外們用了很滿意。 3、基於Cookie的國際化配置 這個我就不說了,反正用的不多,至少我做的項目能不用Cookie就不用Cookie,所以,基於Cookie的國際化配置我就不細說了,如果想知道怎麼配置,那麼下載一個Spring,其中的例子程序就是用Cookie配置的,你自己讀代碼就OK了。 三、注意事項 如果不用默認的瀏覽器語言國際化方式,那麼攔截器一定要配置,如果你有多個UrlMapping,那麼就每個都配上攔截器。 至於配置的LocaleResolver的名字,一定要用上面的配置中的名字localeResolver當然了,這個是默認的名字來的,自己設置成別的也可以,但是就是麻煩,反正我用默認的就感覺不錯 解決問題: 在前幾天引用「Spring的MVC I18N-國際化相關配置 」並做了測試,發現 有一問題。程序運行會拋出異常 「Cannot change HTTP accept header - use a different locale resolution strategy」,根本原因是spring source 做了限制,源碼如下 java代碼 以下是引用片段: public class AcceptHeaderLocaleResolver implements LocaleResolver { public Locale resolveLocale(HttpServletRequest request) { return request.getLocale(); } public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { throw new UnsupportedOperationException( "Cannot change HTTP accept header - use a different locale resolution strategy"); } } 請注意上面的類,該類允許繼承,所以需要改寫setLocale方法,源碼示範如下 Java代碼 以下是引用片段: package org.springframework.web.servlet.i18n; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.DispatcherServlet; import org.springframework.web.servlet.LocaleResolver; public class MyAcceptHeaderLocaleResolver extends AcceptHeaderLocaleResolver { private Locale myLocal; public Locale resolveLocale(HttpServletRequest request) { return myLocal; } public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { myLocal = locale; } } 然後在action-servlet.xml里的設置為 Xml代碼 以下是引用片段: chinese.do=filenameController us.do=filenameController
2. Spring MVC 配置文件講解
使用@Controller定義一個控制器
使用@RequestMapping映射請求
使用@RequestParam綁定請求參數到方法參數
使用@ModelAttribute提供一個從模型到數據的鏈接
使用@SessionAttributes指定存儲在會話中的屬性
<context:annotation-config/>
他的作用是隱式地向 Spring 容器注冊
、
、
、
這 4 個BeanPostProcessor。
例如:
如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等註解就必須聲明。
如果想使用@PersistenceContext註解,就必須聲明的Bean。
如果你想使用@Autowired註解,那麼就必須事先在 Spring 容器中聲明 Bean。傳統聲明方式如下:
<bean class="org.springframework.beans.factory.annotation. "/>
如果想使用 @Required的註解,就必須聲明的Bean。同樣,傳統的聲明方式如下:
<bean class="org.springframework.beans.factory.annotation."/>
記得,使用註解一般都會配置掃描包路徑選項
<context:component-scan base-package=」XX.XX」/>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
這個配置常常見於web.xml文件中
<load-on-startup>1</load-on-startup>是啟動順序,讓這個Servlet隨Servletp容器一起啟動。
<url-pattern>*.do</url-pattern> 會攔截*.do結尾的請求。
<servlet-name>dispatcherServlet</servlet-name>這個Servlet的名字是dispatcherServlet,可以有多個DispatcherServlet,是通過名字來區分的。每一個DispatcherServlet有自己的WebApplicationContext上下文對象。同時保存的ServletContext中和Request對象中,關於key,以後說明。
在DispatcherServlet的初始化過程中,框架會在web應用的 WEB-INF文件夾下尋找名為[dispatcherServlet]-servlet.xml 的配置文件,生成文件中定義的bean。
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value>
</init-param>
指明了配置文件的文件名,不使用默認配置文件名,而使用springMVC.xml配置文件。
其中<param-value>**.xml</param-value> 這里可以使用多種寫法
1、不寫,使用默認值:/WEB-INF/<servlet-name>-servlet.xml
2、<param-value>/WEB-INF/classes/springMVC.xml</param-value>
3、<param-value>classpath*:springMVC-mvc.xml</param-value>
4、多個值用逗號分隔
springMVC-mvc.xml 配置文件片段講解
<context:annotation-config/>
<!-- 自動掃描的包名 -->
<context:component-scan base-package="com.iflysse"/>
<!-- 默認的註解映射的支持 -->
<mvc:annotation-driven/>
<!-- 視圖解釋類 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/><!--可為空,方便實現自已的依據擴展名來選擇視圖解釋類的邏輯 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>
<mvc:annotation-driven /> 是一種簡寫形式,完全可以手動配置替代這種簡寫形式,簡寫形式可以讓初學都快速應用默認配置方案。<mvc:annotation-driven /> 會自動注冊與 兩個bean,是spring MVC為@Controllers分發請求所必須的。
並提供了:數據綁定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,讀寫XML的支持(JAXB),讀寫JSON的支持(Jackson)。
後面,我們處理響應ajax請求時,就使用到了對json的支持。
後面,對action寫JUnit單元測試時,要從spring IOC容器中取與 兩個bean,來完成測試,取的時候要知道是<mvc:annotation-driven />這一句注冊的這兩個bean。
<!-- json 支持 -->
<bean id=""
class="org.springframework.http.converter.json.">
<property name="objectMapper" ref="commonObjectMapper"/>
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- ObjectMapper json轉換 -->
<bean id="commonObjectMapper" class="cn.com.starit.util.CommonObjectMapper"/>
3. springmvc的註解都有哪些
springmvc常用註解標簽詳解
1、@Controller
在SpringMVC 中,控制器Controller 負責處理由DispatcherServlet 分發的請求,它把用戶請求的數據經過業務處理層處理之後封裝成一個Model ,然後再把該Model 返回給對應的View 進行展示。在SpringMVC 中提供了一個非常簡便的定義Controller 的方法,你無需繼承特定的類或實現特定的介面,只需使用@Controller 標記一個類是Controller ,然後使用@RequestMapping 和@RequestParam 等一些註解用以定義URL 請求和Controller 方法之間的映射,這樣的Controller 就能被外界訪問到。此外Controller 不會直接依賴於HttpServletRequest 和HttpServletResponse 等HttpServlet 對象,它們可以通過Controller 的方法參數靈活的獲取到。
@Controller 用於標記在一個類上,使用它標記的類就是一個SpringMVC Controller 對象。分發處理器將會掃描使用了該註解的類的方法,並檢測該方法是否使用了@RequestMapping 註解。@Controller 只是定義了一個控制器類,而使用@RequestMapping 註解的方法才是真正處理請求的處理器。單單使用@Controller 標記在一個類上還不能真正意義上的說它就是SpringMVC 的一個控制器類,因為這個時候Spring 還不認識它。那麼要如何做Spring 才能認識它呢?這個時候就需要我們把這個控制器類交給Spring 來管理。有兩種方式:
(1)在SpringMVC 的配置文件中定義MyController 的bean 對象。
(2)在SpringMVC 的配置文件中告訴Spring 該到哪裡去找標記為@Controller 的Controller 控制器。
2、@RequestMapping
RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。
3、@Resource和@Autowired
@Resource和@Autowired都是做bean的注入時使用,其實@Resource並不是Spring的註解,它的包是javax.annotation.Resource,需要導入,但是Spring支持該註解的注入。
4、@ModelAttribute和 @SessionAttributes
代表的是:該Controller的所有方法在調用前,先執行此@ModelAttribute方法,可用於註解和方法參數中,可以把這個@ModelAttribute特性,應用在BaseController當中,所有的Controller繼承BaseController,即可實現在調用Controller時,先執行@ModelAttribute方法。
@SessionAttributes即將值放到session作用域中,寫在class上面。
具體示例參見下面:使用 @ModelAttribute 和 @SessionAttributes 傳遞和保存數據
5、@PathVariable
用於將請求URL中的模板變數映射到功能處理方法的參數上,即取出uri模板中的變數作為參數。
6、@requestParam
@requestParam主要用於在SpringMVC後台控制層獲取參數,類似一種是request.getParameter("name"),它有三個常用參數:defaultValue = "0", required = false, value = "isApp";defaultValue 表示設置默認值,required 銅過boolean設置是否是必須要傳入的參數,value 值表示接受的傳入的參數類型。
7、@ResponseBody
作用: 該註解用於將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式後,寫入到Response對象的body數據區。
使用時機:返回的數據不是html標簽的頁面,而是其他某種格式的數據時(如json、xml等)使用;
8、@Component
相當於通用的註解,當不知道一些類歸到哪個層時使用,但是不建議。
9、@Repository
用於註解層,在Impl類上面註解。
4. springmvc文件上傳路徑設置
springmvc文件上傳路徑設置:
1、導入文件上傳的坐標。
2、在spring-mvc.xml配置文件中配置文件解析器對象,property可以配置上傳文件的大小等屬性。注意:id一定要是multipartResolver。
3、前端頁面的form表單,method是post方法,加上enctype="multipart/form-data"這個屬性。
4、後端方法的參數類型為MultipartFile,參數名要與前端文件域的name一樣。
5、最後用file參數的getOriginalFilename()方法獲取上傳的文件名,然後再用transferTo(參數1,參數2)方法將文件上傳到指定路徑。註:transferTo(參數1,參數2)的參數1為指定將文件上傳的路徑,參數2為文件名。
5. java-SSM框架怎麼配置啊
SSM現在是比較常用的框架有ssm,既是SpringMVC、Spring及MyBatis
1、確定需要集成版本,以mybatis-3.2.1、spring-framework-3.2.0.RELEASE為例
2、Spring3.2先和MyBatis3.2集成
3、創建web動態工程:注意classpath路徑
4、添加Spring3.2+MyBatis3.2 mysql驅動共計30個jar文件
18個spring相關的jar文件
MyBatis3.2 版本共9個jar文件
包含mysql驅動共28個jar文件
jstl 2個jar 文件共計30個jar文件
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///ssm
jdbc.username=root
jdbc.password=admin
log4j.properties
5、寫配置文件的流程:
資料庫連接配置文件->DataSource->SqlSessionFactory->Mapper->Service->Controller
spring配置文件
UserMapper
也可以在介面裡面定義主鍵的MyBatis映射
UserMapper.xml
UserServiceImpl
Spring3.2+SpringMVC3.2
spring配置文件
web.xml
UserController
webapp/WEB-INF/views/user.jsp
至此,集成完成,在此基礎上可再添加其他功能。每步都要截圖太麻煩了我就不上圖了。
6. 使用springmvc怎麼配置
<!--springMVC前端控制器
希望應用啟動的時候核心控制器同時創建對象.
-->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring/*-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
↑是web.xml中設置的。
之後你還要創建一個<selvlet-name>-servlet.xml的配置文件,前面的那個servletname就是你在web.xml中配置的那個,我上面的這種配置方法我就要創建一個叫做SpringMVC-servlet.xml的配置文件
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
<!--映射器,SpringMVC框架使用映射器,適配器,視圖解析器都是通過類型查詢對象的.
最簡單的映射器:BeanNameUrlHandlerMapping
使用Bean的名稱和url地址進行一對一映射.
-->
<beanclass="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!--適配器
使用簡單控制器適配邏輯.
-->
<beanclass="org.springframework.web.servlet.mvc."></bean>
<!--視圖解析器
使用內部資源視圖解析器
處理內部資源請求轉發,最擅長的解析器.
定義JSP頁面的時候,最常用的非JSP默認標簽組有:JSTL標簽庫.
建議解析視圖頁面的時候,最好能夠解析JSTL的標簽庫
-->
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"></property>
</bean>
<!--配置自定義控制器
SpringMVC-使用配置文件形式定義代碼,請求地址的後綴名不會被前端控制器過濾掉
當前對性愛那個處理請求地址為:/first.mvc
前端控制器過濾請求為:*.mvc
經過前端控制器過濾後的路徑地址為:/first
-->
<beanname="/first.mvc"class="controller.FirstController"></bean>
<beanname="/second.mvc"class="controller.SecondController"></bean>
</beans>