日期:2014-05-16  浏览次数:20392 次

关于Struts2 的CRUD(并涉及页面,数据库,服务器端的乱码解决)
数据库采用mysql, (Navicat MySQL作为mysql的UIhttp://www.w2blog.net/view/142.html)
服務器采用tomcat6.0,
IDE使用Europa ,
使用dbutil(http://commons.apache.org/dbutils/)作为操作数据库辅助的jar。

1. 国际化问题
   所有代码都使用utf-8(在europa中如下设置jsp、js 、 properties的编码格式)


  所有jsp页面
   <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>(JSP编译器在将JSP文件编译成Servlet时使用的编码)

   <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
(重新认定编码方式)

  tomcat的server.xml
    <Connector port="8080" 
	      URIEncoding="UTF-8" 
	       protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 
			   />



(注意要重新建europa的javaee的tomcat server;否则europa会保留第一次设置的值)

     数据库编码

   确保mysql安装时选择的编码为utf8,可以通过如下方式确认。(
my.ini)

[client]

port=3306

[mysql]

default-character-set=utf8



  连接代码 
&useUnicode=true&characterEncoding=utf-8


2、struts2的配置文件

package.properties
User.name = 用户名
User.pwd = 用户密码
User.description = 用户详细信息
##############################
User.submit = 登录
User.create = 注册
User.update = 提交
User.reset = 重置
User.edit = 修改注册信息
User.logout = 退出登录
User.delete = 删除用户
User.selectAll = 查询全部


键值对就是为了实现国际化(package.properties可以有多种命名方法,看你的具体业务需要了,我只是写个例子)

在jsp中调用:   <s:properties value="%getText('User.name')"/>
在java source中调用:  String name = getText("User.name")

UserAction-user_create-validation.xml


<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
    <field name="name">
        <field-validator type="requiredstring">
            <message><![CDATA[ 用户名不能为空 ]]></message>
        </field-validator>
    </field>
    <field name="pwd">
        <field-validator type="requiredstring">
            <message key="requiredstring"/>
        </field-validator>
    </field>
</validators>



文件名格式为 className-actionalias-validation.xml


关于标签

<s:iterator value="userList">
........
</s:iterator>







关于action的别名

xml配置文件:

		<action name="user_*" method="{1}" class="example.UserAction">
			<result name="input">
				/example/user_create.jsp
			</result>
			<result name="create_success">
				/example/user_create_success.jsp
			</result>
			<result name="editInit">
				/example/user_edit.jsp
			</result>
			<result name="selectAll">
				/example/user_selectAll.jsp
			</result>
			<result name="delete_success">
				/example/user_create_success.jsp
			</result>
			<result name="create">
				/example/user_create.jsp
			</result>
		</action>


java代码中:

	public String select() throws Exception {

		// 查询SQL
		String USER_SELECT = "SELECT u.NAME, u.PWD, u.DESCRIPTION FROM USER u";
		ResultSetHandler rsh = new ResultSetHandler() {
			public Object handle(ResultSet rs) throws SQLException {
				List<User> userListTemp = n