菜鸟学习Struts――国际化(一)

2014-11-24 00:57:48 · 作者: · 浏览: 0

一、概念

国际化:界面上的语言可以根据用户所在的地区改变显示语言。

如图:

\

二、实例

下面就一步一步的教大家利用Struts实现国际化。

1、编写资源文件

这个资源文件就是界面上显示的字符,资源文件里面包含英文和中文的资源文件这样我们就可以转换资源文件来实现把界面上的中文、英文互相转化。

这里下载资源文件>>

2、编写相关界面。

Index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    
    
    My JSP 'index.jsp' starting page
	
  
	
  
	
      
	
  
	
  
	
  
  
  
  
	登录 
中文 英文


http://blog.csdn.net/gwblue/article/details/login.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>   
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>     




  
Insert title here


	<%-- 
	
		
    
     
   
	
	
		
    
     
   
	
	--%>
	
  
	
  


">

login_success.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>   
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 




  
Insert title here


	
  
		
   
	
  



login_error.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>   
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>     




  
Insert title here


	
		
    
     
   
	
	
		
    
     
   
	
	



3、编写相关的类

ChangeLanguageAction.java

package com.bjpowernode.struts;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 * 完成语言的手动切换
 * @author Administrator
 *
 */
public class ChangeLanguageAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String lang = request.getParameter("lang");
		Locale locale = Locale.getDefault();
		if ("zh".equals(lang)) {
			locale = new Locale("zh", "CN"); 
		}else if ("en".equals(lang)) {
			locale = new Locale("en", "US");
		}
		//将Locale设置到session中
		//request.getSession().setAttribute(Globals.LOCALE_KEY, locale);
		this.setLocale(request, locale);
		return mapping.findForward("index");
	}

}


LoginAction.java

package com.bjpowernode.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

/**
 * 登录Action
 * 负责取得表单数据、调用业务逻辑、返回转向信息
 * 
 * @author Administrator
 *
 */
public class LoginAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		
		LoginActionForm laf = (LoginActionForm)form;
		String username = laf.getUsername();
		String password = laf.getPassword();
		
		UserManager userManager = new UserManager();
		ActionMessages messages = new ActionMessages();
		try {
			userManager.login(username, password);
			
			//创建国际化消息文本
		
			ActionMessage message = new ActionMessage("login.success", username);
			messages.add("login_success_1", message);

			
			//传递国际化消息
			this.saveMessages(request, messages);
			return mapping.findForward("success");
		}catch(UserNotFoundException e) {
			e.printStackTrace();
			//创建国际化消息文本
			ActionMessage error = new ActionMessage("login.user.not.found", username); 
			messages.add("error_1", error);
			
			//传递国际化消息
			this.saveErrors(request, messages);
		}catch(PasswordErrorException e) {
			e.printStackTrace();
			//创建国际化消息文本
			ActionMessage erro