spring MVC之一

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");
		
	}

	

}

 

其它的在文件中了,没有全写完,不想写了,,无聊

 

你可能感兴趣的:(spring mvc)