3.7 Struts2综合应用实例--添加学生信息



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

152454_Jttb_220508.jpg

 图3.19 添加学生信息界面


1. 建立数据库

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

项目名列名数据类型是否可空默认值说明
学号XHchar(6)
主键
姓名XMchar(8)


性别XBbit


出生时间CSSJdatetime

专业ZYchar(20)


备注BZvarchar(500)

2. 建立Web项目

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

3. 加载Struts 2的基本类库

该步骤与3.2.1节中的第3步步骤相同,这里不再赘述。

4. 修改web.xml

其内容见3.2.1节第4步

5. 建立stu.jsp文件

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

<%@ page language="java" pageEncoding="utf-8"%> 
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
    <head>
        <s:head />
    </head>
    <body >
        <h3>添加学生信息</h3>
        <s:form action="save.action" method="post" theme="simple">
            <table>
                <tr>
                    <td>学号:</td><td><s:textfield name="xs.xh"></s:textfield></td>
                </tr>
                <tr>
                    <td>姓名:</td><td><s:textfield name="xs.xm" ></s:textfield></td>
                </tr>
                <tr>
                    <td>性别:</td><td><s:radio name="xs.xb" list="#{1:'男',2:'女'}" value="1"></s:radio></td>
                </tr>
                <tr><td>专业:</td><td><s:textfield name="xs.zy" label="专业"></s:textfield></td> 
                </tr>
                <tr><td width="70">出生时间:</td><td><s:datetimepicker name="xs.cssj" id="cssj" displayFormat="yyyy-MM-dd" ></s:datetimepicker></td> 
                </tr>
                <tr>
                    <td> 备注:</td><td><s:textarea name="xs.bz" label="备注"></s:textarea></td>
                </tr>
                <tr>
                    <td><s:submit value="添加"></s:submit></td><td><s:reset value="重置"></s:reset></td>
                </tr>
            </table>
        </s:form>
    </body>
</html>

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增加配置 

<filter-mapping>    
    <filter-name>struts2</filter-name>    
    <url-pattern>/struts/*</url-pattern>    
</filter-mapping>


备注:

还可能遇到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\下),把文件中乱码部分修改成正确的中文。

附:修改后的文件《3.7 Struts2综合应用实例的附件



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文件夹下建立该文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
    "http://struts.apache.org/dtds/struts-2.1.dtd">
<package name="default" extends="struts-default">
    <action name="save" class="org.action.SaveAction">
        <result name="success">/success.jsp</result>
        <result name="error">/stu.jsp</result>
    </action>
</package>
</struts>


9. 创建success.jsp页面

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

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

10. 部署运行

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


附:目录《JavaEE基础实用教程》笔记说明

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值