springMVC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 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.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <!--value属性的值是你存放国际化信息的文件名的前缀,basename 表是单数 --> <property name="basename" value="messages"></property> <!-- <property name="basenames"> <list> <value>messages</value> </list> </property> --> <property name="useCodeAsDefaultMessage" value="true" /> </bean> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> <property name="defaultLocale" value="en" /> </bean> <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="lang" /> <!-- lang=ja_JP_ //日文 lang=zh //中文 lang=en //英文 --> </bean> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <!--prefix / 表示根目录下 /WEB-INF/jsp/ 表示 根目录的/WEB-INF/jsp/目录下 --> <property name="prefix" value="/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 控制器所在的包{添加注解的Controller} --> <context:component-scan base-package="cn.easier.view" /> <!--<mvc:annotation-driven/>配制这个就不能国际化了,暂时还没找到原因 Configures support for @Controllers <mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping 和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。即解决了@Controller注解的使用前提配置。好像 3.0.5就没有注册了DefaultAnnotationHandlerMapping 和AnnotationMethodHandlerAdapter两个bean了 如果不用这个,则要声明下面2个bean --> <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="localeChangeInterceptor"/> <ref bean="commonInterceptor"/> <!-- <ref bean="secodeIntecept"/> --> </list> </property> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> </bean> <bean id="commonInterceptor" class="cn.easier.interceptor.CommonInterceptor"/> <!-- <bean id="secodeIntecept" class="cn.easier.interceptor.SecodeIntecept"></bean> --> <!-- 对静态资源文件的访问 方案一 (二选一) <mvc:default-servlet-handler/> --> <!-- 对静态资源文件的访问 方案二 (二选一) --> <mvc:resources mapping="/images/**" location="/images/" cache-period="31556926" /> <mvc:resources mapping="/js/**" location="/js/" cache-period="31556926" /> <mvc:resources mapping="/css/**" location="/css/" cache-period="31556926" /> <!-- 异常处理 --> <!-- 第一种 --> <!-- 为了简单的进行异常处理,Spring提供了SimpleMappingExceptionResolver类,该类实现了HandlerExceptionResolver接口, 需要使用时只需要使用<bean/>节点进行声明即可,示例如下 --> <!-- <bean id="exceptionResolver" --> <!-- class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> --> <!-- 定义默认的异常处理页面,当该异常类型的注册时使用 --> <!-- <property name="defaultErrorView" value="error"></property> --> <!-- 定义异常处理页面用来获取异常信息的变量名,默认名value为exception --> <!-- <property name="exceptionAttribute" value="ex"></property> --> <!-- 定义需要特殊处理的异常,用类名或完全路径名作为key,异常也页名作为值 --> <!-- <property name="exceptionMappings"> --> <!-- <props> --> <!-- <prop key="IOException">error</prop> --> <!-- <prop key="java.sql.SQLException">error</prop> --> <!-- </props> --> <!-- </property> --> <!-- </bean> --> <!-- 第二种 --> <bean id="customExceptionHandler" class="cn.easier.exception.CustomExceptionHandler"/> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>smvc1</display-name> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page> <error-page> <exception-type> java.lang.RuntimeException</exception-type> <location>/error.jsp</location> </error-page> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springMVC1</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springMVC-*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC1</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <servlet> <description></description> <display-name>InitServlet</display-name> <servlet-name>InitServlet</servlet-name> <servlet-class>cn.easier.servlet.InitServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> </web-app>
InitServlet.java
package cn.easier.servlet; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.util.Enumeration; import java.util.Iterator; import java.util.ResourceBundle; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; /** * Servlet implementation class InitServlet */ public class InitServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static String rootPath; /** * @see HttpServlet#HttpServlet() */ public InitServlet() { super(); } /** * @see Servlet#init(ServletConfig) */ @Override public void init() throws ServletException { rootPath =getServletContext().getRealPath("/"); initJSi180(); } /** * @see Servlet#destroy() */ public void destroy() { } /** * 初始化js国际化 */ private void initJSi180() { ResourceBundle rb = ResourceBundle.getBundle("system_config"); String name = rb.getString("message.i180.name"); File path = new File(rootPath + "WEB-INF/classes"); String files[] = path.list(); // 所有文件 OutputStream os = null; OutputStreamWriter osw = null; for (String file : files) { if (file.indexOf(name) != -1) { // String jsName = file.substring(0, file.lastIndexOf(".")); String filePath = rootPath + "js\\i180\\" + jsName + ".js"; // 单个文件 File saveFile = new File(filePath); try { if (!saveFile.exists()) { saveFile.createNewFile(); // 创建 } os = new FileOutputStream(filePath); osw = new OutputStreamWriter(os,"utf-8"); rb = ResourceBundle.getBundle(jsName); Iterator<String> iterators = rb.keySet().iterator(); String languageObj="var language=new Array(); \r\n"; /** * language["user.settting.info"]=""; */ osw.write(languageObj); while (iterators.hasNext()) { String key=iterators.next(); String value=rb.getString(key); //value=value.replace("\", ""); String body="language [\""+key+"\"]=\""+value+"\"; \n"; osw.write(body); } osw.close(); os.close(); } catch (Exception e) { e.getStackTrace(); } } } } }
CommonInterceptor.java
package cn.easier.interceptor; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import cn.easier.bean.UserBean; public class CommonInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { request.getSession().setAttribute("languagejs", "en"); //设置enjsi180 System.out.println("common---interceptor"); UserBean userBean=(UserBean)request.getSession().getAttribute("LOGIN_USER"); Locale defaultLocale=null; //defaultLocale.getLanguage(); if(userBean!=null){ return true; } request.getSession().getServletContext().getRequestDispatcher("/login.jsp").forward(request, response); //下面这样的国际化就成问题了 //response.sendRedirect(request.getSession().getServletContext().getContextPath()+"/login.jsp"); return false; } @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { System.out.println("afterCompletion"); } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { System.out.println("postHandle"); } }
其它的在文件中了,没有全写完,不想写了,,无聊