基於HttpSession的國際化實現

 代碼:

loginForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix= "form" uri= "http://www.springframework.org/tags/form" %>
<%@taglib prefix= "spring" uri= "http://www.springframework.org/tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>測試基於SessionLocaleResolver的國際化</title>
</head>
<body>
<!-- 用戶可以選擇切換語言環境 -->
<a href="loginForm?request_locale=zh_CN">中文</a> | <a href="loginForm?request_locale=en_US">英文</a>
<br/>
<h3><spring:message code="title"/></h3>
<form:form modelAttribute="user" method="post" action="login" >
	<table>
		<tr>
			<td><spring:message code="loginname"/></td>
			<td><form:input path="loginname"/></td>
		</tr>
		<tr>
			<td><spring:message code="password"/></td>
			<td><form:input path="password"/></td>
		</tr>
		<tr>
			<td><input type="submit" value="<spring:message code="submit"/>"/></td>
		</tr>
	</table>
</form:form>
</body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix= "spring" uri= "http://www.springframework.org/tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>測試ConversionService</title>
</head>
<body>
<spring:message code="welcom" arguments="${requestScope.user.username}"/>
</body>
</html>

User.java

package com.bean;

import java.io.Serializable;

public class User implements Serializable {
	private String loginname;
	private String password;
	private String username;
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public String getLoginname() {
		return loginname;
	}
	public void setLoginname(String loginname) {
		this.loginname = loginname;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "User [loginname=" + loginname + ", password=" + password + ", username=" + username + "]";
	}
	
}

UserController.java

package com.control;

import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.bean.*;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import org.springframework.web.servlet.support.RequestContext;

@Controller
public class UserController{
	private static final Log logger = LogFactory.getLog(UserController.class);
	
	@RequestMapping(value="/{formName}")
	 public String loginForm(
			 @PathVariable String formName,
			 String request_locale,
			 Model model,
			 HttpServletRequest request){
		System.out.println("request_locale = " + request_locale);
		if(request_locale != null){
			// 設置中文環境
			if(request_locale.equals("zh_CN")){
				Locale locale = new Locale("zh", "CN"); 
                request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale); 
			}
			// 設置英文環境
			else if(request_locale.equals("en_US")){
				Locale locale = new Locale("en", "US"); 
                request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale); 
			}
			// 使用之前的語言環境
			else {
				request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,LocaleContextHolder.getLocale());
			}      
		}
		User user = new User();
		model.addAttribute("user",user);
		// 動態跳轉頁面
		return formName;
	}
	 
	 @RequestMapping(value="/login",method=RequestMethod.POST)
	 public String login(
			 @ModelAttribute @Validated User user,
			 Model model,
			 HttpServletRequest request) {
		 logger.info(user);
		 if(user.getLoginname()!=null && user.getLoginname().equals("haige") && user.getPassword()!=null && user.getPassword().equals("123456")){
			 //從後臺代碼獲取國際化信息
	         RequestContext requestContext = new RequestContext(request);
	         String username = requestContext.getMessage("username");
	         user.setUsername(username);
			 model.addAttribute("user", user);
		     return "success";
		 }
		 return "error";
	 }

}

截圖:






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章