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

被折叠的 条评论
为什么被折叠?



