ClientsForm.java
package com.bookstoreonline.struts.forms;import java.util.regex.Matcher;
import java.util.regex.Pattern;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;import com.bookstoreonline.struts.util.RegExpression;public class ClientsForm extends ActionForm { /**
*
*/
private static final long serialVersionUID = 1L; protected int cid=0;
protected String cname=null;
protected String sex=null;
protected String phone=null;
protected String address=null;
protected String post=null;
protected String email=null; public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} public int getCid() {
return cid;
} public void setCid(int cid) {
this.cid = cid;
} public String getCname() {
return cname;
} public void setCname(String cname) {
this.cname = cname;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public String getPhone() {
return phone;
} public void setPhone(String phone) {
this.phone = phone;
} public String getPost() {
return post;
} public void setPost(String post) {
this.post = post;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
}
public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
ActionErrors errors = new ActionErrors();
String queryString = arg1.getQueryString();
if (queryString.equalsIgnoreCase("method=insert")
|| queryString.equalsIgnoreCase("method=update")) {
//check name
if (cname == null || cname.equals("")) {
errors.add("cname", new ActionMessage("clients.error.cname"));
}
//check phone
if (phone == null || phone.equals("")) {
errors.add("phone1", new ActionMessage("clients.error.phone1"));
}
else {
Pattern p_phone = Pattern.compile(RegExpression.REG_phone);
Matcher m_mobile = p_phone.matcher(phone);
if (!m_mobile.find()) {
errors.add("phone2", new ActionMessage("clients.error.phone2"));
}
}
//check email
if (email != null && !email.equals("")) {
Pattern p_email = Pattern.compile(RegExpression.REG_email);
Matcher m_email = p_email.matcher(email);
if (!m_email.find()) {
errors.add("email", new ActionMessage("clients.error.email"));
}
}
//check postcode
if (post != null && !post.equals("")) {
Pattern p_postcode = Pattern.compile(RegExpression.REG_post);
Matcher m_postcode = p_postcode.matcher(post);
if (!m_postcode.find()) {
errors.add("post", new ActionMessage("clients.error.post"));
}
}
}
System.out.println("prince1:"+this.getCname());
arg1.setAttribute("clientsFormBean", this);
return errors;
}}
解决方案 »
- Connection。createStatement()抛出 java.lang.NullPointerException 请大家帮忙
- Tomcat JDK 问题,大家帮忙来看看
- 文本框长度设置
- 使用SAAJ调用webservice出错,求救
- java vector iterator 正则匹配中的问题
- 往mysql中插入数据抛出StringIndexOutOfBoundsException,怎么解决
- 在Tomcat5.0.27中为什么不可以用Excel打开xls文件的链接
- 在java程序中如何获取系统的环境变量?
- J2EE客户端如何运行?
- js json
- 数据库问题
- 求JAVA实现SOA框架的最简单代码
ClientsAction.java
package com.bookstoreonline.struts.actions;import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;
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;
import org.apache.struts.actions.DispatchAction;import com.bookstoreonline.hibernate.beans.Clients;
import com.bookstoreonline.hibernate.dao.ClientsDAO;
import com.bookstoreonline.struts.forms.ClientsForm;public class ClientsAction extends DispatchAction { protected ClientsDAO clientsDAO; Logger log = Logger.getLogger(this.getClass()); public ClientsDAO getClientsDAO() {
return clientsDAO;
} public void setClientsDAO(ClientsDAO clientsDAO) {
this.clientsDAO = clientsDAO;
} public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
List list=clientsDAO.findAll();
request.setAttribute("clientsList", list);
ActionForward forward = mapping.findForward("list");
return (forward);
} public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionForward forward = mapping.findForward("add");
return (forward);
} public ActionForward insert(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionMessages messages = new ActionMessages();
ClientsForm clientsForm = (ClientsForm) form;
// insert object
Clients clients = new Clients();
/*clients.setCname(clientsForm.getCname());
clients.setAddress(clientsForm.getAddress());
clients.setEmail(clientsForm.getEmail());
clients.setPhone(clientsForm.getPhone());
clients.setPost(clientsForm.getPost());
clients.setSex(clientsForm.getSex());*/
clients.setCname("李四");
clients.setAddress("南京市");
clients.setEmail("[email protected]");
clients.setPhone("15812345678");
clients.setPost("123456");
clients.setSex("女");
clientsDAO.insert(clients);
// save messages
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"clients.message.add.success"));
saveErrors(request, messages);
List list=clientsDAO.findAll();
request.setAttribute("clientsList", list);
return mapping.findForward("list");
} public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionMessages messages = new ActionMessages();
String cid = request.getParameter("cid");
// get object
Clients clients = clientsDAO.findById(cid);
// save form object
ClientsForm clientsForm = new ClientsForm();
clientsForm.setCid(clients.getCid());
clientsForm.setCname(clients.getCname());
clientsForm.setSex(clients.getSex());
clientsForm.setPhone(clients.getPhone());
clientsForm.setEmail(clients.getEmail());
clientsForm.setAddress(clients.getAddress());
clientsForm.setPost(clients.getPost());
// save in request
request.setCharacterEncoding("gb2312");
request.setAttribute("clientsFormBean", clientsForm); return mapping.findForward("edit");
} public ActionForward update(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionMessages messages = new ActionMessages();
ClientsForm clientsForm = (ClientsForm) form;
Clients clients = new Clients();
// update object
clients.setCid(new Integer(clientsForm.getCid()));
clients.setCname(clientsForm.getCname());
clients.setSex(clientsForm.getSex());
clients.setPhone(clients.getPhone());
clients.setEmail(clientsForm.getEmail());
clients.setAddress(clientsForm.getAddress());
clients.setPost(clientsForm.getPost());
clientsDAO.update(clients);
// save messages
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"clients.message.edit.success"));
saveErrors(request, messages);
List list=clientsDAO.findAll();
request.setAttribute("clientsList", list);
ActionForward forward = mapping.findForward("list");
return (forward);
} public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionMessages messages = new ActionMessages(); String cid = request.getParameter("cid");
if (cid == null) {
// if id not exist
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"address.message.edit.notexist"));
} else {
// delete object
clientsDAO.delete(cid);
// save messages
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"clients.message.delete.success"));
}
saveErrors(request, messages);
List list=clientsDAO.findAll();
request.setAttribute("clientsList", list);
return mapping.findForward("list");
}
}
Clients.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bookstoreonline.hibernate.beans.Clients" table="clients" catalog="bookstore">
<id name="cid" type="java.lang.Integer">
<column name="cid" />
<generator class="native" />
</id>
<property name="cname" type="java.lang.String">
<column name="cname" />
</property>
<property name="sex" type="java.lang.String">
<column name="sex" />
</property>
<property name="phone" type="java.lang.String">
<column name="phone" />
</property>
<property name="address" type="java.lang.String">
<column name="address" />
</property>
<property name="post" type="java.lang.String">
<column name="post" />
</property>
<property name="email" type="java.lang.String">
<column name="email" />
</property>
</class>
</hibernate-mapping>
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<data-source type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="com.mysql.jdbc.Driver" />
<set-property property="url"
value="jdbc:mysql://localhost:3306/bookstore" />
<set-property property="username" value="root" />
<set-property property="password" value="00000000" />
<set-property property="maxActive" value="10" />
<set-property property="maxWait" value="5000" />
<set-property property="defaultAutoCommit" value="false" />
<set-property property="defaultReadOnly" value="false" />
<set-property property="validationQuery"
value="SELECT COUNT(*) FROM manages" />
</data-source>
</data-sources>
-->
<form-beans>
<form-bean name="loginForm"
type="com.bookstoreonline.struts.forms.LoginForm">
</form-bean>
<form-bean name="clientsForm"
type="com.bookstoreonline.struts.forms.ClientsForm">
</form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/index" forward="/login.jsp" />
<action path="/welcome" forward="/welcome.jsp" /> <action path="/login" name="loginForm" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" input="/login.jsp">
<forward name="success" path="/welcome.jsp" />
<forward name="failure" path="/login.jsp" />
</action> <action path="/logout"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="logout" path="/login.jsp" />
</action>
<action path="/clients" parameter="method" name="pageForm" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="list" path="/clients.jsp" />
</action>
<action path="/clients_add" parameter="method" name="clientsForm" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy"
input="/clients_add.jsp">
<forward name="list" path="/clients.jsp" />
<forward name="add" path="/clients_add.jsp" />
</action>
<action path="/clients_edit" parameter="method" name="clientsForm" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy"
input="/clients_edit.jsp">
<forward name="list" path="/clients.jsp" />
<forward name="edit" path="/clients_edit.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.bookstoreonline.struts.resources.ApplicationResources" />
</struts-config>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/bookstore</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>00000000</value>
</property>
</bean>
<!-- �������� -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean> <!-- ����Hibernate -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com/bookstoreonline/hibernate/beans/Manages.hbm.xml</value>
<value>
com/bookstoreonline/hibernate/beans/Clients.hbm.xml
</value></list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean> <!-- ����DAO -->
<bean id="managesDAO" class="com.bookstoreonline.hibernate.dao.ManagesDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="clientsDAO" class="com.bookstoreonline.hibernate.dao.ClientsDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- ����DAO���� -->
<bean id="ManagesDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="managesDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="ClientsDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="clientsDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert">PROPAGATION_REQUIRED</prop>
<prop key="update">PROPAGATION_REQUIRED</prop>
<prop key="delete">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<!-- ����Struts���� -->
<bean name="/login" class="com.bookstoreonline.struts.actions.LoginAction">
<property name="managesDAO">
<ref local="managesDAO" />
</property>
</bean>
<bean name="/logout" class="com.bookstoreonline.struts.actions.LogoutAction">
<property name="managesDAO">
<ref local="managesDAO" />
</property>
</bean>
<bean name="/clients"
class="com.bookstoreonline.struts.actions.ClientsAction">
<property name="clientsDAO">
<ref local="clientsDAO" />
</property>
</bean>
<bean name="/clients_add"
class="com.bookstoreonline.struts.actions.ClientsAction">
<property name="clientsDAO">
<ref local="clientsDAO" />
</property>
</bean>
<bean name="/clients_edit"
class="com.bookstoreonline.struts.actions.ClientsAction">
<property name="clientsDAO">
<ref local="clientsDAO" />
</property>
</bean>
</beans>
<!-- 中文乱码处理 -->
<filter>
<filter-name>filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter>
<filter-name>filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<servlet-name>/*</servlet-name>
</filter-mapping> 可是仍然是乱码,楼上说的页面编码和服务器的编码要一致,服务器编码是指哪个啊?我在加了这么一段之后,其他地方的编码需要改动么,我现在还是保留UTF-8另外可不可能是post方式提交或request、response的问题呢,我对**FORM获取表单内容的过程不太清楚,它是如何根据名称获取的呢
那该怎么解决呢?
有做过滤器吗,写个过滤类,表单提交都先到servlet请求,如果在请求前加个过滤器,将字符都转为中文再进行处理。
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException { HttpServletRequest request_1 = (HttpServletRequest) request;
HttpServletResponse response_1 = (HttpServletResponse) response; // 转换编码,并且加上去缓存
request_1.setCharacterEncoding("GBK");
response_1.setCharacterEncoding("GBK");
chain.doFilter(request, response); }
前台页面和查询结果的字符集保持一致
我加了这么一个过滤器,按11楼说的都统一改成UTF-8
结果是表单提交数据到ACTION FORM是正确的,但是ACTIONFORM数据写入数据库的中文还是不正确,一个汉字变成了两个问号
由于Java默认的编码方式是UNICODE,所以用中文易出问题,常用解决:
String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);utf-8解决JSP中文乱码问题,在页面的开始处加:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%request.setCharacterEncoding("UTF-8");%>如果仍不能解决问题,还需要这样处理一下:
String msg = request.getParameter("message");
String str=new String(msg.getBytes("ISO-8859-1"),"UTF-8");out.println(st);
<property name="url">
<value>jdbc:mysql://localhost:3306/bookstore</value>
</property>现在改成jdbc:mysql://localhost:3306/bbs?useUnicode=true&amp;characterEncoding=utf-8 就没有问题了这样从页面到服务器到数据库都是统一的UTF-8编码了