SSH中JSP页面向数据库添加数据 到Action时是乱码.在线等
这是我的页面
- Java code
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%><%request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8"); %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'add.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="orderInfo.do?op=add" method="post"> 家居客家具预定 <table> <tr> <td> 家具品牌 </td> <td> <select name="orderInfoDto.FBrand"> <option value="请选择"> 请选择 </option> <option value="百强"> 百强 </option> <option value="意风"> 意风 </option> <option value="华日"> 华日 </option> <option value="红苹果"> 红苹果 </option> <option value="美克美家"> 美克美家 </option> </select> </td> </tr> <tr> <td> 产品类型 </td> <td> <input type="radio" name="orderInfoDto.FType" value="床垫" > 床垫 <input type="radio" name="orderInfoDto.FType" value="床头柜 "> 床头柜 <input type="radio" name="orderInfoDto.FType" value="地柜"> 地柜 </td> </tr> <tr> <td> 联系人 </td> <td> <input type="text" name="orderInfoDto.FContact"> </td> </tr> <tr> <td> 联系电话 </td> <td> <input type="text" name="orderInfoDto.FPhone"> </td> </tr> <tr> <td> <input type="submit" value="提交预定"> </td> </tr> </table> </form> </body></html>
我的Action:
- Java code
/* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */package com.db.web.action;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.DynaActionForm;import org.apache.struts.actions.DispatchAction;import com.db.biz.IOrderInfoBiz;import com.db.entity.dto.OrderInfoDto;/** * MyEclipse Struts Creation date: 02-27-2011 * * XDoclet definition: * * @struts.action path="/orderInfo" name="orderInfoForm" parameter="op" * scope="request" validate="true" */public class OrderInfoAction extends DispatchAction { /* * Generated Methods */ private IOrderInfoBiz orderInfoBiz = null; public void setOrderInfoBiz(IOrderInfoBiz orderInfoBiz) { this.orderInfoBiz = orderInfoBiz; } /** * Method execute * * @param mapping * @param form * @param request * @param response * @return ActionForward */ public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DynaActionForm orderInfoForm = (DynaActionForm) form; String path = "all"; try { OrderInfoDto dto = (OrderInfoDto) orderInfoForm.get("orderInfoDto"); System.out.println(dto.getFBrand()); orderInfoBiz.add(dto); } catch (RuntimeException e) { e.printStackTrace(); path = "error"; throw e; } return mapping.findForward(path); } public ActionForward all(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DynaActionForm orderInfoForm = (DynaActionForm) form; List list = orderInfoBiz.All("from OrderInfo"); request.setAttribute("list", list); return mapping.findForward("all"); }}我的Struts配置文件
- XML code
<?xml version="1.0" encoding="gbk"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config> <data-sources /> <form-beans> <form-bean name="orderInfoForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="orderInfoDto" type="com.db.entity.dto.OrderInfoDto" /> </form-bean> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings> <action attribute="orderInfoForm" name="orderInfoForm" parameter="op" path="/orderInfo" scope="request" type="org.springframework.web.struts.DelegatingActionProxy"> <set-property property="cancellable" value="true" /> <forward name="all" path="/index.jsp" /> </action> </action-mappings> <message-resources parameter="com.db.web.ApplicationResources" /> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="classpath:applicationContext*.xml" /> </plug-in></struts-config>
[解决办法]
加过滤器 很方便的
1:在你写JAVA类的地方新建个 类。filter 内容:
package com.yourcompany.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 filter implements Filter{
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
2:在web.xml添加 映射文件(注:<filter-class>写你过滤器类的路径</filter-class>)
<filter>
<filter-name>fileter</filter-name>
<filter-class>com.yourcompany.filter.filter</filter-class>
</filter>
<filter-mapping>
<filter-name>fileter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>