struts乱码解决
来源:互联网 发布:淘宝交易纠纷处理 编辑:程序博客网 时间:2024/06/05 04:48
struts乱码解决
国庆没地方去所以就学习了一下struts,用struts做了一个新闻管理系统;
但插入数据库中的中文总是出现乱码,经过一个上午的努力,终于把乱码问题给解决了,以下就是我查找与解决乱码的过程:
1,既然显示在网页那的是乱码,首先得确定在数据库中的内容是否能正确显示,我用的数据库为MYSQL4.1,
打开控制台,select * from news;果然,在数据库中所插入的内容都为乱码,然后我试下手动插入中文,
出现错误,data too long.......,怎么可能?我用的类型为varchar(100),而插入的数据只为三个中文,不应该会出现数据过长的错误呀,
后来想想可能是编码的问题,所以把原来的表删了,重建一个,并设置编码为GB2312
CREATE TABLE NEWS(
ID INT PRIMARY KEY,
TITLE VARCHAR(100) NOT NULL,
CONTENT VARCHAR(400) NOT NULL,
AUTHOR VARCHAR(40) NOT NULL,
TIME DATE NOT NULL,
KEYWORD VARCHAR(20) NOT NULL,
TYPE INT NOT NULL
)CHARSET=GB2312;
然后重新插入,OK可以正确的插入中文了,数据库方面的问题解决;
2.然后在网页那重新插入中文,同样还是乱码!!
以下是我的添加新闻的类:
package newsBean;
import java.util.Vector;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
import org.apache.struts.action.Action;
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.validator.DynaValidatorForm;
/**
* @author sxwailyc
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class NewsAddAction extends Action {
/* (非 Javadoc)
* @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO 自动生成方法存根
DynaValidatorForm newsForm =(DynaValidatorForm)form;
String title=(String)newsForm.get("title");
System.out.println(title);
String content=(String)newsForm.get("content");
String author =(String)newsForm.get("author");
String keyword =(String)newsForm.get("keyword");
Integer newsType= (Integer)newsForm.get("newsType");
HttpSession session=request.getSession();
Vector newsList=new Vector();
ServletContext context=servlet.getServletContext();
DataSource dataSource=(DataSource)context.getAttribute(Constants.DATASOURCE_KEY);
DB db=new DB(dataSource);
String PageForward=null;
News news=new News();
news.setTitle(title);
news.setContent(content);
news.setAuthor(author);
news.setKeyword(keyword);
news.setType(newsType.intValue());
ActionMessages errors = new ActionMessages();
if(news.Insert(db)){
newsList =News.SearchNewsTitle(db);
session.setAttribute(Constants.NEWS_LIST_KEY,newsList);
PageForward="toAdminMain";
}
else{
errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("errors.insertFail"));
if(!errors.isEmpty()){
saveErrors(request,errors);
}
PageForward="toWrong";
}
db.close();
return mapping.findForward(PageForward);
}
}
首先考虑到在从提交表单的页面传递过来的数据是否是乱码呢?
在这里加了一句String title=(String)newsForm.get("title");System.out.println(title);
果然,在这里打印出来的title居然是乱码!!!!!苦恼!就是这个问题,弄了一个多钟,
最后重新检查一下提表单的JSP页面,原来在表单那的<form method="post"> 少写了post!!!
导制表单递数据时出现乱码,添加method="post";重新system.out.println("title");
中文正确显示!!
3.以为应该能正确显示中文了,添加->浏览,还是乱码!
应该是页面编码的确良问题!
解决方法:
写一个自己的ActionServlet
MyActionServlet
public class MyActionServlet extends ActionServlet {
/* (非 Javadoc)
* @see org.apache.struts.action.ActionServlet#process(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
protected void process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// TODO 自动生成方法存根
request.setCharacterEncoding("GB2312");//设置编码为GB2312
response.setCharacterEncoding("GB2312");
System.out.println("设置成功");
super.process(request, response);
}
}
在web.xml中配置一下
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>newsBean.MyActionServlet</servlet-class>
</servlet>
4.这下应试没问题了吧,添加->浏览.又是乱码,再重新检查一遍,都没问题呀!!
最后想想,会不会是数据源那的编码问题,在struts_config.xml那设置数据库编码
<set-property property="url"
value="jdbc:mysql://localhost:3306/sample?useUnicode=true&characterEncoding=GB2312"/>
重启tomcat
添加->浏览;
哈哈,中文终于能正确显示了!
- struts乱码解决
- struts乱码解决
- 解决Struts中文乱码
- struts解决中文乱码
- struts中文乱码解决
- struts乱码解决
- 过滤器解决struts乱码
- struts解决乱码
- 解决STRUTS中文乱码问题!
- struts乱码解决(利用过滤器)
- 解决Struts中文乱码问题
- 解决struts开发中文乱码
- 解决struts开发中文乱码
- 解决struts中的乱码问题
- STRUTS乱码问题的解决
- struts解决乱码的方法
- Struts 2.3乱码的解决
- 解决Struts中文乱码问题
- 逆蛇型矩阵(螺旋魔方矩阵)
- TableLayoutPanel 常见操作
- vc平台下 解决外部符号错误:_main,_WinMain@16,__beginthreadex
- One method to disable close button on title bar
- SAP 模块中文解释
- struts乱码解决
- 关于JAVA判断字符串是否数字
- (转)tomcat5中文问题解决
- Linux下文件的操作
- java多线程设计模式
- 文件的下载(ASP.NET实现邮箱中附件下载的功能)
- MySQL表的创建,数据批量导入指南.
- 使用字符串函数前在use项里面加入strutils
- asp.net 3层结构访问数据库