读书人

关于Struts2 的CRUD(并牵系页面数据

发布时间: 2012-11-12 12:31:57 作者: rapoo

关于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}" name="code">public String select() throws Exception {// 查询SQLString 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 = new ArrayList<User>();/* * select */。。。。。。。。。。。。。。。。。。。。public String createInit() throws Exception {return "create";}


jsp代码中:
<td><s:url action="user_editInit" id="user_edit"><s:param name="name" value="name"></s:param></s:url><s:a href="%{user_edit}"><s:text name="%{getText('User.edit')}"/></s:a><s:url action="user_delete" id="user_delete"><s:param name="name" value="name"></s:param></s:url><s:a href="%{user_delete}"><s:text name="%{getText('User.delete')}"/></s:a><hr></td>



从action的命名及java source的方法名中, 相信大家已经看出规律来了。

附:
sql
引用
/*
MySQL Data Transfer
Source Host: localhost
Source Database: webapp
Target Host: localhost
Target Database: webapp
Date: 2008-7-9 下午 11:31:33
*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
CREATE TABLE `user` (
`id` int(8) NOT NULL auto_increment,
`name` varchar(45) NOT NULL,
`pwd` varchar(45) NOT NULL,
`description` varchar(245) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `user` VALUES ('42', '1', '1', '1');
INSERT INTO `user` VALUES ('43', '11', '11', '11');


其他地方感觉也没什么可说的啦, (其实上面每一点要深入下去, 都能写成一篇, 我只是草草说下,抛砖引玉了)我把源码贴上, 如果需要jar文件, 可以congpeixue@126.com

后面有时间我会对这个例子再完善一下。。。。 1 楼 lxfei0311 2008-07-10 thanks very much 2 楼 beikechen 2008-07-11 很久没写代码了,下下来 回顾回顾! 3 楼 laorer 2008-07-14 DB用utf-8的话,如果数据量多的话,会不会造成空间使用量比较大
?? 4 楼 congpeixue 2008-07-14 UTF-8是比GBK多占用了成倍的空间

你的网站访客没有什么国外用户, 就用GBK吧 ~

5 楼 taotiede 2008-07-15 学习中。。。。

读书人网 >其他数据库

热点推荐