博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.7 Struts2综合应用实例--添加学生信息
阅读量:7113 次
发布时间:2019-06-28

本文共 5487 字,大约阅读时间需要 18 分钟。

hot3.png



在该实例中,通过构建一个添加学生信息项目,来综合应用Struts 2的知识点,包括标签、Struts 2配置等。首先来看看添加学生信息的界面,如图3.19所示。

152454_Jttb_220508.jpg

 图3.19 添加学生信息界面

1. 建立数据库

首先建立数据库XSCJ,建立学生表XSB。

项目名 列名 数据类型 是否可空 默认值 说明
学号 XH char(6)
主键
姓名 XM char(8)
性别 XB bit
出生时间 CSSJ datetime
专业 ZY char(20)
备注 BZ varchar(500)

2. 建立Web项目

打开MyEclipse,建立一个Web项目,命名为“Example_Struts”。

3. 加载Struts 2的基本类库

该步骤与步骤相同,这里不再赘述。

4. 修改web.xml

其内容见。

5. 建立stu.jsp文件

在项目的WebRoot文件夹下建立stu.jsp文件,代码。

<%@ page language="java" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%>            
        
        

添加学生信息

        
            
出生时间:
                
                    
                
                
                    
                
                
                    
                
                
                 
                
                 
                
                    
                
                
                    
                
            
学号:
姓名:
性别:
专业:
 备注:
            

Struts2的标签有自动排版功能。如果想自己排版,form标签中加入theme="simple",但加入该元素后,标签中的label属性就没用了。

备注:如果是比较新的版本(比如我用的2.2.1版本),会报错“No tag "datetimepicker" defined in tag library imported with prefix "s"”。

原因:新版本中把struts2.0中的和ajax相关的,如datetimepicker,tree,treenode 都移动到了dojo中了

解决方式:

1、在jsp文件中加入<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>和<sx:head/>

2、改为<sx:datetimepicker></sx:datetimepicker>

3、struts2-dojo-plugin-2.2.1.jar拷贝到/WEB-INF/lib下

4、在struts.xml增加配置 

        
struts2
        
/struts/*
    

备注:

还可能遇到datetimepicker的乱码问题,显示的时候月份从一月到八月都可以正常显示,而到九月,十月就乱码。

解决方式一(这种方式会导致没有显示中文的“月”)

在 <sd:head />中加入:extraLocales="UTF-8"

在 <sd:datetimepicker .../>中加入:language="UTF-8"

解决方式二(推荐)

重新修改struts源码中的 dojo_zh.js和dojo_zh-cn.js文件(文件位置在: struts2-dojo-plugin-2.1.6.jar\org.apache.struts2\static\dojo\nls\下),把文件中乱码部分修改成正确的中文。

附:修改后的文件《》

6. 建立表对应的JavaBean和DBConn类

在src文件夹下新建包“org.model”,在该包下建class文件,命名为“Xsb”,该类中有6个字段,分别为xh、xm、xb、zy、cssj和bz,并生成它们的getter和setter方法,代码如下:

package org.model; import java.sql.Date;public class Xsb {    private String xh;    private String xm;    private byte xb;    private String zy;    private Date cssj;    private String bz;    // 生成它们的getter和setter方法    public String getXh() {        return xh;    }    public void setXh(String xh) {        this.xh = xh;    }    public String getXm() {        return xm;    }    public void setXm(String xm) {        this.xm = xm;    }    public byte getXb() {        return xb;    }    public void setXb(byte xb) {        this.xb = xb;    }    public String getZy() {        return zy;    }    public void setZy(String zy) {        this.zy = zy;    }    public Date getCssj() {        return cssj;    }    public void setCssj(Date cssj) {        this.cssj = cssj;    }    public String getBz() {        return bz;    }    public void setBz(String bz) {        this.bz = bz;    }}

注意,cssj为java.sql.Date类型。

在src文件夹下建立包org.work,在该包下建立class文件,命名为“DBConn”,该类负责和数据库连接,代码。

package org.work; import java.sql.*;import org.model.Xsb;public class DBConn {    Connection conn;    PreparedStatement pstmt;    public DBConn(){        try{            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");            conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;" +"databaseName=XSCJ","sa","sa");        }catch(Exception e){            e.printStackTrace();        }    }    // 添加学生    public boolean save(Xsb xs){        try{            pstmt=conn.prepareStatement("insert into XSB (XH,XM,XB,ZY,CSSJ,BZ) values(?,?,?,?,?,?)");            pstmt.setString(1, xs.getXh());            pstmt.setString(2, xs.getXm());            pstmt.setByte(3, xs.getXb());            pstmt.setString(4, xs.getZy());            pstmt.setDate(5, xs.getCssj());            pstmt.setString(6, xs.getBz());//注意顺序            pstmt.executeUpdate();            return true;        }catch(Exception e){            e.printStackTrace();            return false;        }    }}

补充:

使用sql语句:exec sys.sp_readerrorlog 0, 1, 'listening'可以查看sql server 2008 r2 的监听端口

7. 建立Action类SaveAction

SaveAction.java代码。

package org.action; import org.model.Xsb;import org.work.DBConn;import com.opensymphony.xwork2.ActionSupport;public class SaveAction extends ActionSupport{    private Xsb xs;    public Xsb getXs() {        return xs;    }    public void setXs(Xsb xs) {        this.xs=xs;    }    public String execute() throws Exception {        DBConn db=new DBConn();        Xsb stu=new Xsb();        stu.setXh(xs.getXh());        stu.setXm(xs.getXm());        stu.setXb(xs.getXb());        stu.setZy(xs.getZy());        stu.setCssj(xs.getCssj());        stu.setBz(xs.getBz());        if(db.save(stu)){            return SUCCESS;        }else            return ERROR;    }}

8. 创建并配置struts.xml文件

在src文件夹下建立该文件,代码如下:

    
        
/success.jsp        
/stu.jsp    

9. 创建success.jsp页面

在WebRoot文件夹下创建success.jsp文件,代码如下:

<%@ page language="java" pageEncoding="utf-8"%>          恭喜你,添加成功!  

10. 部署运行

部署后,启动Tomcat,在浏览器中输入“http://localhsot:8080/Example_Struts/stu.jsp”,输入要添加的学生信息后,单击【添加】按钮,如果添加成功就会跳转到success.jsp页面。

附:目录

转载于:https://my.oschina.net/jerrypan/blog/621192

你可能感兴趣的文章
temu开发之提取函数参数值与函数返回值
查看>>
hadoop执行 报错
查看>>
CentOS7.0下部署Postfix Sasl Dovecot Openwebmail服务
查看>>
CentOS7.0下NTP时间同步服务
查看>>
Ex2010-07 Installing(Updating) Exchange Server 2010 Service Pack 3
查看>>
16.3、awk使用介绍
查看>>
C++的函数重载
查看>>
Python第六周 学习笔记(3)
查看>>
数组的高级(排序和查找)
查看>>
标准I/O和管道
查看>>
python的高级应用详解
查看>>
关于JMETER的一些总结整理
查看>>
解密令牌桶
查看>>
实时显示例task manager.jsp
查看>>
requre.js模块管理页面中的js文件,优化页面,减少请求
查看>>
Linux双网卡静态路由修改
查看>>
快捷键介绍
查看>>
周期性计划任务/权限/LDAP见解
查看>>
思科拓扑---rip协议应用
查看>>
python 高阶函数:返回函数
查看>>