3.7 Struts2綜合應用實例--添加學生信息

css

在該實例中,經過構建一個添加學生信息項目,來綜合應用Struts 2的知識點,包括標籤、Struts 2配置等。首先來看看添加學生信息的界面,如圖3.19所示。
html

 圖3.19 添加學生信息界面java


1. 創建數據庫

首先創建數據庫XSCJ,創建學生表XSB。node

項目名 列名 數據類型 是否可空 默認值 說明
學號 XH char(6)
主鍵
姓名 XM char(8)


性別 XB bit


出生時間 CSSJ datetime

專業 ZY char(20)


備註 BZ varchar(500)

2. 創建Web項目

打開MyEclipse,創建一個Web項目,命名爲「Example_Struts」。web

3. 加載Struts 2的基本類庫

該步驟與3.2.1節中的第3步步驟相同,這裏再也不贅述。ajax

4. 修改web.xml

其內容見3.2.1節第4步sql

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屬性就沒用了。apache


備註:若是是比較新的版本(好比我用的2.2.1版本),會報錯「No tag "datetimepicker" defined in tag library imported with prefix "s"」。瀏覽器

緣由:新版本中把struts2.0中的和ajax相關的,如datetimepicker,tree,treenode 都移動到了dojo中了

解決方式:

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

二、改成<sx:datetimepicker></sx:datetimepicker>

三、struts2-dojo-plugin-2.2.1.jar拷貝到/WEB-INF/lib下

四、在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基礎實用教程》筆記說明

相關文章
相關標籤/搜索