Struts 2での文字化けし処理

3699 ワード


文字化けし処理の考え方:
1.struts.xmlファイルに追加
      
2.jspページでUTF-8にエンコード設定
        pageEncoding="UTF-8"%>
3.フィルタを追加、フィルタにエンコード設定を追加
     public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2)throws IOException, ServletException {        arg0.setCharacterEncoding("utf-8");       arg2.doFilter(arg0, arg1);       }
 
具体的には、次のようになります.
ページ:



  
    My JSP 'login.jsp' starting page
  

  
    

アクションクラス:
package com.accp.struts2.chapter6;

import com.opensymphony.xwork2.ActionSupport;

public class ResultAction extends ActionSupport {
 private String name;
 private String password;

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 @Override
 public String execute() throws Exception {
  System.out.println(name+"\t"+password);
  return SUCCESS;
 }
}


フィルタ:
package com.accp.struts2.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter {

 public void destroy() {
  // TODO Auto-generated method stub

 }

 public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain arg2) throws IOException, ServletException {
  // TODO Auto-generated method stub
  arg0.setCharacterEncoding("utf-8");
  arg2.doFilter(arg0, arg1);
 }

 public void init(FilterConfig arg0) throws ServletException {
  // TODO Auto-generated method stub

 }

}


結果:



  
    My JSP 'login.jsp' starting page
  

  
    ${name}
${password}

プロファイル:




    
    
     
            /chapter6/result_success.jsp
        
    



 
web.xmlファイル:


 
 
  encodingFilter
  com.accp.struts2.filter.EncodingFilter
 
  
  encodingFilter
  /*
 

 
  struts2
  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
 
 
  struts2
  /*
 

 
  index.jsp
 
 
  BASIC
 



なお、符号化フィルタはstrutsフィルタの前に置かなければならない