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フィルタの前に置かなければならない