国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java框架篇---struts開發

2019-11-14 23:20:39
字體:
來源:轉載
供稿:網友
java框架篇---struts開發1.TokenToken主要是以一種指令牌的形式進行重復提交處理的,在很多情況下,如果用戶對同一個表單進行了多次提交,則有可能造成數據的混亂,此時,WEB服務器必須可以對這種重復提交的行為做出處理,例如:如果現在是一個用戶注冊的操作,如果用戶已經提交了表單,而且服務器端已經對這次操作進行了成功的處理,而此時的用戶通過瀏覽器執行了后退操作,并且重復進行表單提交時,服務器端就應該及時的識別出這些用戶的錯誤操作,并進行錯誤處理,防止用戶的重復提交。編寫首頁,給出鏈接,并獲得Token —— index.jsp
<%@ page language="java" pageEncoding="GBK"%><html><head>    <title>獲得Token </title></head><body>    <h3><a href="tokenforward.do">獲取Token,輸入數據</a></h3></body></html>

編寫ActionForm —— TokenforwardForm.java

package org.lxh.struts.form;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMapping;public class TokenforwardForm extends ActionForm {    public ActionErrors validate(ActionMapping mapping,            HttpServletRequest request) {        return null;    }    public void reset(ActionMapping mapping, HttpServletRequest request) {    }}

定義接收輸入數據的Action —— InputAction.java

package org.lxh.struts.action;import org.lxh.struts.form.InputForm;public class InputAction extends Action {    public ActionForward execute(ActionMapping mapping, ActionForm form,            HttpServletRequest request, HttpServletResponse response) {        InputForm inputForm = (InputForm) form;        if (super.isTokenValid(request)) {     // 如果設置的Token正確,則輸出內容            System.out.

修改struts-config.xml配置文件

<form-beans>        <form-bean name="tokenforwardForm"            type="org.lxh.struts.form.TokenforwardForm" />        <form-bean name="inputForm"            type="org.lxh.struts.form.InputForm" />    </form-beans>    <action-mappings>        <action attribute="tokenforwardForm" input="/ch17/input.jsp"            name="tokenforwardForm" path="/ch17/tokenforward" scope="request"            type="org.lxh.struts.action.TokenforwardAction">            <forward name="input" path="/ch17/input.jsp"></forward>        </action>        <action attribute="inputForm" input="/ch17/input.jsp"            name="inputForm" path="/ch17/input" scope="request"            type="org.lxh.struts.action.InputAction" />    </action-mappings>

編寫資源文件,添加錯誤信息 —— applicationResources.properties

# 請不要重復提交!error.token = /u8bf7/u4e0d/u8981/u91cd/u590d/u63d0/u4ea4/uff01
2.文件上傳
  • 掌握Struts文件上傳的基本操作原理;
  • 可以使用Struts完成文件的上傳功能實現。
文件上傳在WEB項目中文件上傳是一個必不可少的操作,前面介紹過兩種上傳組件的使用,分別是SmartUpload、FileUpload,這兩種組件相比較起來SmartUpload更加的容易,而FileUpload卻較為復雜,幸運的是在Struts中也對文件上傳有所支持,而且上傳使用的組件就是FileUpload,但是此時的使用比起直接使用FileUpload就要方便許多了。如果要想正確的使用FileUpload組件完成操作,還需要依靠<html:file>標簽完成,此標簽核心語法如下所示:<html:file property="對應ActionForm中的屬性名稱"/>FormFile類的常用方法

No.

方法

類型

描述

1

public byte[] getFileData() throws FileNotFoundException,IOException

普通

取得上傳文件大小

2

public InputStream getInputStream() throws FileNotFoundException,IOException

普通

取得上傳文件的輸入流

3

public int getFileSize()

普通

取得上傳文件的大小

4

public String getFileName()

普通

取得上傳文件的名稱

5

public String getContentType()

普通

取得上傳文件的類型

定義表單 —— upload.jsp
<%@ page language="java" pageEncoding="GBK"%><%@ taglib uri="http://www.mldn.cn/struts/bean" prefix="bean"%><%@ taglib uri="http://www.mldn.cn/struts/html" prefix="html"%><%@ taglib uri="http://www.mldn.cn/struts/logic" prefix="logic"%><html:html lang="true"><head>    <title>文件上傳</title></head><body>    <html:form action="/ch17/upload.do" method="post" enctype="mult定義ActionForm,接收上傳文件 —— UploadForm.java
package org.lxh.struts.form;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMapping;import org.apache.struts.upload.FormFile;public class UploadForm extends ActionForm {    private FormFile photo ;            // 接收上傳文件    public ActionErrors validate(ActionMapping mapping,            HttpServletRequest request) {        // 暫不驗證        return null;    }    public void reset(ActionMapping mapping, HttpServletRequest request) {    }    public FormFile getPhoto() {        return photo;    }    public void setPhoto(FormFile photo) {        this.photo = photo;    }}
定義Action —— UploadAction.java
public class UploadAction extends Action {    public ActionForward execute(ActionMapping mapping, ActionForm form,            HttpServletRequest request, HttpServletResponse response) {        UploadForm uploadForm = (UploadForm) form;        IPTimeStamp its = new IPTimeStamp(request.getRemoteAddr()); // 自動生成文件名        String fileName = its.getIPTimeRand()                + "."                + uploadForm.getPhoto().getFileName().split("http://.")[uploadForm                    .getPhoto().getFileName().split("http://.").length - 1];// 生成文件名        File outFile = new File(super.getServlet().getServletContext()                .getRealPath("/") + "upload"+ File.separator                + uploadForm.getPhoto().getFileName().split("http://."));    // 輸出文件路徑        try{            OutputStream output = new FileOutputStream(outFile) ;        // 文件輸出            byte data[] = new byte[1024] ;        // 接收文件            int temp = 0 ;            // 結束判斷            while ((temp = uploadForm.getPhoto().getInputStream()                    .read(data, 0, 1024)) != -1) {    // 分塊保存                output.write(data) ;            // 保存文件            }            output.close() ;        // 關閉輸出        }catch(Exception e){            e.printStackTrace() ;        // 錯誤輸出        }        return null;    }}
配置struts-config.xml文件
<struts-config>    <form-beans>        <form-bean name="uploadForm" type="org.lxh.struts.form.UploadForm" />    </form-beans>    <action-mappings>            <action attribute="uploadForm" input="/upload.jsp"            name="uploadForm" path="/upload" scope="request"            type="org.lxh.struts.action.UploadAction" />    </action-mappings></struts-config>

這樣就可以很方便的完成文件上傳操作。

3.怎么配置動態ActionForm?在正常操作中,每一個Action必須對應一個ActionForm,但是這樣一來就會造成ActionForm過多的情況,所以為了解決此類問題,在Struts中專門提供了動態ActionForm,以解決ActionForm過多的問題。動態ActionForm對應的操作類是:org.apache.struts.action.DynaActionForm,使用此類時,不需要定義具體的類,只需要在struts-config.xml文件中配置即可。配置一個動態ActionForm,包含兩個屬性 —— struts-config.xml
<struts-config>    <form-beans>        <form-bean name="newsForm"             type="org.apache.struts.action.DynaActionForm">            <form-property name="title" type="java.lang.String">            </form-property>            <form-property name="content" type="java.lang.String">            </form-property>        </form-bean>    </form-beans>    <action-mappings>            <action attribute="newsForm" input="/ch17/news.jsp"            name="newsForm" path="/ch17/news" scope="request"            type="org.lxh.struts.action.NewsAction" />    </action-mappings></struts-config>
定義輸入表單 —— news.jsp
<%@ page language="java" pageEncoding="GBK"%><%@ taglib uri="http://www.mldn.cn/struts/bean" prefix="bean"%><%@ taglib uri="http://www.mldn.cn/struts/html" prefix="html"%><%@ taglib uri="http://www.mldn.cn/struts/logic" prefix="logic"%><html:html lang="true"><head>    <title>動態actionForm</title></head><body>    <html:form action="/ch17/news.do" method="post">        標題:<html:text property="title"/><br>        內容:<html:text property="content"/><br>        <html:submit value="提交"/><html:reset value="重置"/>    </html:form></body></html:html>
接收參數 —— NewsAction.java
package org.lxh.struts.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.DynaActionForm;public class NewsAction extends Action {    public ActionForward execute(ActionMapping mapping, ActionForm form,            HttpServletRequest request, HttpServletResponse response) {        DynaActionForm dynaForm = (DynaActionForm) form ;        String title = dynaForm.getString("title") ;    // 取得title輸入內容        String content = dynaForm.getString("content") ;    // 取得content輸入內容        System.out.println("title --> " + title) ;        // 輸出title內容        System.out.println("content --> " + content);    // 輸出content內容        return null;    }}
動態ActionForm依靠配置完成,可以解決ActionForm過多的問題,但是ActionForm本身依然屬于Struts的最大弱點。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉义县| 普兰店市| 文成县| 米易县| 巴中市| 于都县| 隆子县| 长治县| 富锦市| 睢宁县| 乌审旗| 巴林右旗| 白水县| 景泰县| 中阳县| 库尔勒市| 家居| 陆良县| 金坛市| 奉节县| 汝南县| 麦盖提县| 东乌珠穆沁旗| 商洛市| 定兴县| 房产| 宜州市| 化隆| 策勒县| 股票| 清流县| 万载县| 兴城市| 拜城县| 永丰县| 台江县| 双辽市| 濮阳市| 商南县| 衡阳县| 林州市|