关于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
Java代码
<Connector port="8080"  
   URIEncoding="UTF-8"  
    protocol="HTTP/1.1"  
           connectionTimeout="20000"  
           redirectPort="8443"  
  /> 



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

     数据库编码

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

Java代码
[client] 
 
port=3306 
 
[mysql] 
 
default-character-set=utf8 



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


2、struts2的配置文件

package.properties
Java代码
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


Java代码
<!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配置文件:

Java代码
<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代码中:
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 = new ArrayList<User>(); 
            /*
             * select
             */ 
 
。。。。。。。。。。。。。。。。。。。 
 
public String createInit() throws Exception { 
    return "create"; 



jsp代码中:
Java代码
<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');

你可能感兴趣的:(java,tomcat,mysql,jsp,SQL Server)