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");
}
}
其它的在文件中了,没有全写完,不想写了,,无聊