JAVA WEB學習(二)

一些總結


使用struts2的項目中各個部分的作用

1.WebContent/*.jsp:顯示前端的頁面,用於和用戶的交互
2.WebContent/WEB-INF/web.xml:設置過濾器
3.WebContent/WEB-INF/lib/*.jar:項目運行過程中依賴的庫文件
4.src/[package]/*.java:用於定義各種action,實現對前端用戶發出的請求進行處理
5.src/struts.xml:該文件將前端頁面和後臺的動作聯繫到了一起

struct.xml的編寫

下面是一個動作的例子

<struts>
    <package name="searchBookName"  extends="struts-default">
        <action name="search" class="com.dongchang.action.SearchBook" method="execute">
            <result name="SUCCESS">/findbooks.jsp</result>
            <result name="FALSE">/false.jsp</result>
        </action>
    </package>
</struts> 

package 爲一個包,我們需要關注的是中間action的部分。對於上面的例子,是一個返回用戶主頁的例子,action的名字是name,這個名字是在jsp等前端頁面調用的標識。class屬性的值,是src中你的.java文件的包名加文件名。而method屬性的值則是在.java文件中你將要調用到的方法,如果method屬性爲空則默認execute方法。下面result標籤則是根據.java文件中調用的方法的返回值確定這個action下一步跳轉的頁面:當返回的字符串爲”SECUSS“那麼就會跳轉到findbook.jsp這個頁面,當然也可以添加其他情況。
這樣,前端和後臺之間就聯繫起來了。

前端和後臺的數據交互

1.jsp(html)中的表單,如:

<form action="search" method="get"> 
    <input name="name" type="text" placeholder="這裏輸入姓名以查詢書籍信息" size="22"
                    required /> 
    <input type="submit" value="開始查詢" />
</form>

這是一個簡單的提交姓名的表單,注意這個input標籤的變量名爲name,當點擊開始查詢後會調用search這個action,根據struts.xml文件,將會調用下面這個java文件中的execute方法。

public class SearchBook {
    private String name;

    public String getName() { return this.name; }

    public void setName(String name) { this.name = name; }
    public String execute() { return "SUCCESS"; }
}

同時因爲form中提交的變量名爲name,因此struts2會自動調用java中的setName方法將私有變量name賦值爲jsp中接收到的數值。
因爲返回值爲”SUCCESS“因此會跳轉到findbook.jsp界面。假設這個頁面有一個table需要上一個jsp中獲得的name,此時struts2會自動挑勇getName方法實現變量的傳遞。
2.在鏈接中傳遞數據
在struts2中可以利用鏈接調用一個方法,如

<a href=action_name>鏈接名</a>

調用方法的同時傳遞數據

<a href=action_name?data1=value1&data2=value2>鏈接名</a>

此時同樣會調用get和set方法實現數據的交換,需要注意的是此時特殊字符如空格+號等不能被傳遞,可以使用URLEncoder方法首先對數據編碼然後URLDecoder解碼。
3.後臺向前臺傳入數
(1) 利用getAttribute()在jsp頁面獲得,會調用getter方法
(2)使用session
後臺傳入,傳入session,相當於python的字典,key和value,value可以是任意類型:

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
String[] list;
...
ServletRequest request = ServletActionContext.getRequest();
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();

session.setAttribute("booklist", list);

jsp接收:

<%@ page language="java" import="java.util.*"
    contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
            String list = (String[]) session.getAttribute("booklist");
            if (list.size() > 0) {
                youraction;
            } else {
                error;
            }
%>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章