Struts2 开发 编码问题汇总

Struts2:中文乱码问题

1.中文乱码问题到处都有,因为编码格式一人一套,页面有页面编码格式,action有action编码格式,servlet有servlet编码格式,数据库有数据库编码格式,而且不同数据库还有不同的格式,五花八门,应有尽有。

如果网页要支持国际化,那字符编码格式只能是选择UTF-8,别的都不好使。而我们平时选择的中文编码格式一般是gb2312和gbk,因为这两个对中文支持性最好,尤其是gbk。

在开发一个WEB项目时,最好统一一种编码格式,比如统一为gb2312,那就不要在某些页面又用gbk,自己把自己弄乱了。

2.数据库,例如MySQL,它在创建数据库表的时候最容易出现字符编码的问题,因为它默认的是字符编码格式为latin1,用MySQL数据库搞开发的人应该都被它的一顿乱码乱晕过。在用MySQL创建数据库,创建数据库表时最好都特别指定编码格式,如下:

在MySQL那个黑不拉叽的窗口下执行

创建一个数据库xiaoqi

create database xiaoqi CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;

创建一个表user

create table users (
userId int not null primary key auto_increment,
userName varchar(20) not null,
userPassword varchar(20) not null,
userNickname varchar(20) not null
)TYPE = MYISAM CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;

是不是就这样呢,不是,麻烦着呢,在插入数据的时候还得指定:

先执行命令:set names ‘gb2312‘;

然后再向表中插入中文信息:insert into user values (null,‘xiaoqi‘,‘xiaoqi0101‘,‘小起‘);

想在这个黑窗口中查询表,也得保证执行过set names ‘gb2312‘命令,也就是说把中文信息扔到表里面去,和把中文信息从表里面提出来,都要执行set names ‘gb2312‘,这里说的是在这个黑窗口中显示查询结果时需要这么设置。还有,这个窗口关掉后,再打开时,该命令效果消失...

有没有简单一点的方法,有,用MySQL管理工具来操作数据库,和使用SQL SERVER2000的查询分析器工具类似。MySQL管理工具里面有设置字符编码格式的地方,一次设置,终身使用,绝不反弹...

3.解决数据库的乱码问题后,我们就可以从数据库中取出中文信息并显示在页面中。但是,这只是提取数据库中已经存在的中文信息。想要通过页面往数据库中添加中文信息,现在还不行,Struts2框架提供了一个很简单的解决方法,那就是,在struts.xml文件中添加下述语句:

<constant name="struts.i18n.encoding" value="gb2312"/>

它的位置最好放在最前面,<struts></struts>根元素下面的第一位置。

4.上面的方法还只解决了post传值的乱码问题!什么意思呢,就是说当我们用post方法传送数据时没有中文乱码问题了,但是get方法传值还是有。

我们页面中的表单提交一般用的是post方法,如果不是用的这个方法,或者没有去指定method="post",那从现在开始养成尽量用post方法提交的习惯。

不过有时候没法设置成post传值,比如url超链接传值,例:<a href="aaaa.jsp?name=小起"></a>,这个时候,我们定义的什么过滤器都不好使,啥原因呢,因为过滤器不过滤get传值,而超链接是用get方法传值的,所有这个时候就得另外想办法,比如说在我们用的Tomcat的conf文件夹中找到server.xml,在该文件中找到<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />,打开该文件的时候尽量用编辑器,不要用什么破记事本,因为用记事本打开的话,里面一团黑,哪些地方是正文,哪些地方是注释可难分开。找到前面那句话,它里面定义的port参数就是我们的端口号8080,也就是说要改端口号也是在这句话里面改,现在我们要在里面添加一个参数URIEncoding="gb2312"。好了,现在get方法传值也是用gb2312编码了,真麻烦!

转自http://blog.csdn.net/nature_fly088/article/details/7749038

时间: 2024-10-22 14:49:30

Struts2 开发 编码问题汇总的相关文章

深入分析JavaWeb 43 -- Struts2开发入门

一.Struts2概述 1.Struts2是什么? Struts2是一个M(模型-域–范围模型)V(View视图)C(控制器)框架(模型2).框架都是一个半成品.提高开发效率. Struts1是一个MVC框架,非常流行.有很大的缺点.此时一个webwork的框架设计超前,名气不是很大.Struts1+webworkd=struts2.用的是struts1的名字,但是与sruts1没啥关系,struts2的核心是webwork框架. 2.Struts2能干什么? web开发Strust2 核心功能

struts2 之 【struts2简介,struts2开发步骤,struts2详细配置,struts2执行流程】

入门框架学习避免不了的问题: 1. 什么是框架? 简单的说,框架就是模板,模子,模型.就是一个可重用的半成品. 2. 如何学习框架? 学习框架其实就是学习规则,使用框架就是遵循框架的规则,框架是可变的 和 不可变的部分组成,学习框架就需要把 什么可变什么不可变搞清楚. 3. 为什么使用 struts2 框架:聊这个问题先来聊一聊 Web的开发模式, model1 和 model2 模式. 4. model1模式:jsp+javaBean开发. 优点:执行效率高,代码比较少,开发效率比较高.适合小

Struts2开发基础

Struts2开发基础 struts2采用拦截器的机制来处理用户的请求,使得业务逻辑控制器能够与ServletAPI完全脱离开. 1. Hello World! 配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/

iOS开发之手势识别汇总

iOS开发之手势识别汇总 iOS开发中手势识别有六种: 轻击手势(TapGestureRecognizer), 轻扫手势 (SwipeGestureRecognizer), 长按手势(LongPressGestureRecognizer), 拖动手势(PanGestureRecognizer), 捏合手势(PinchGestureRecognizer), 旋转手势(RotationGestureRecognizer), 1,轻击手势(TapGestureRecognizer) UITapGest

Struts2开发环境搭建,及一个简单登录功能实例

首先是搭建Struts2环境. 第一步 下载Struts2去Struts官网 http://struts.apache.org/ 下载Struts2组件.截至目前,struts2最新版本为2.3.1.3,下载struts-2.3.16.3-all.zip,解压,放着. 第二步 新建Web Project并导入jar包在MyEclispe中新建Web Project,然后找到解压的Struts2包,在里面apps文件夹下找到struts2-blank.war,解压这个WAR文件,将里面WEB-IN

Java编码问题汇总

转自 http://www.blogjava.net/zhangchao/archive/2011/05/26/351051.html Thanks Java编码问题汇总 工作中经常遇到java编码问题,由于缺乏研究,总是无法给出确切的答案,这个周末在网上查了一些资料,在此做些汇总. 问题一:在java中读取文件时应该采用什么编码? Java读取文件的方式总体可以分为两类:按字节读取和按字符读取.按字节读取就是采用InputStream.read()方法来读取字节,然后保存到一个byte[]数组

Web开发必备资源汇总[转]

导读:原文来自< Best “must know” open sources to build the new Web>,译文由酷壳网陈皓整理编译< 开源中最好的Web开发的资源 >.文中收集的资料相当的齐全,供大家学习.参考. 学习HTML 5编程和设计 ★ HTML5 Rocks: Major Feature Groups的学习HTML5的资源(HTML5演示,教程). 源码 很不错的HTML5 Dashboard–Mozilla,效果很炫. WhatWG Developers

移动平台3G手机网站前端开发布局技巧汇总

移动平台3G手机网站前端开发布局技巧汇总 作者:前端开发-武方博   发布:2011-05-10 09:11   分类:移动开发   阅读:120,618 views   7条评论 您或许正在或准备参与一个WepApp项目,您或许正在Google搜索mobile development相关的文章,您或许是一名专业的WEB前端工程师,您或许想学习Mobile前端开发方面的技术,如果您被我说中了,呵呵那么这篇文章将为您带来意想不到的惊喜!当您看到这篇文章时,哥已经默认认为您是一名资深的WEB前端工程

Android开发编码规范(自用)

转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!   Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境下Java的编码风格和标准 指导原则 1)首先是为人编写程序,其次才是计算机.这是软件开发的基本要点,软件的生命周期贯穿产品的开发.测试.生产.用户使用.版本升级和后期维护等长期过程,只有易读.易维护的软件代码才具有生命力. 2)保持代码的简单清晰,避免过分的编程技巧.保持代码的简单化是软件工程化的