struts2 jQuery tag (1)

最近又重拾 web 程式,才讓我發現,原來 struts 又進化了! 提供了不少 jQuery tag,可以很方便的做出漂亮的操作介面! 說明如下:

  • 官網: https://code.google.com/p/struts2-jquery/ 其實上面就有很多 sample 程式,下載來看就懂了,我這個 po 文算是給自己做個筆記吧!
  • 這個程式只是簡單的有兩個功能,第一個是可以選擇日期,並顯示出來,第二個功能是查詢某一天的股價,在下一篇再說明,這裡先看一下第一個功能執行出來的畫面。

  • 先在 eclipse 中建立一個 Dynamic Web Project,這裡就暫且命名為 struts2,先看寫完第一個功能時,整個程式會出現那些檔案:

裡面的 beans-config.xml 及 datasource.properties 在這裡還用不到,這是我在下一篇要用 spring 及 mybatis 存取資料庫時才會用到的。

  • 載入 struts2 jar 檔,於 pom.xml 中加入如下內容:
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.16.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.16.3</version>
    </dependency>
    <dependency>
        <groupId>com.jgeppert.struts2.jquery</groupId>
        <artifactId>struts2-jquery-plugin</artifactId>
        <version>3.7.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-convention-plugin</artifactId>
        <version>2.3.16.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-json-plugin</artifactId>
        <version>2.3.16.3</version>
    </dependency>
  • web.xml 中加入如下內容,讓 struts 來處理網頁。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    <display-name>Struts2</display-name>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

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

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
  </web-app>
  • struts.xml: 特別注意綠色那一行,所有 struts 的 action 類別會放在 idv.steven.demo.action 這個 package 裡。
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
    <constant name="struts.convention.action.packages" value="idv.steven.demo.action"/>
    <constant name="struts.convention.default.parent.package" value="json-default"/>
    <constant name="struts.custom.i18n.resources" value="messages" />

    <!-- Settings for CKEditor Image Upload -->
    <constant name="struts.ckeditor.allowUploads" value="true" /> <!-- default is false -->
    <constant name="struts.ckeditor.allowedFileExtensions" value="jpg,jpeg,png" />
    <constant name="sstruts.ckeditor.uploadFolder" value="/imageUploads" />

    <!-- include file="showcase.xml" / -->
</struts>
  • 建立首頁  index.jsp: 上面綠色的部份,引入 struts jquery tag,接下來使用 tabbedpanel,做出兩頁的頁籤,當按了第一個頁籤時,觸發 calendar 這個 action,要注意,於 <head></head> 一定要加入 <sj:head/>,這樣才會引入 struts jQuery 相關的 javascript。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>首頁</title>
    <sj:head/>
</head>
<body>

    <s:url var="remoteurl1" action="calendar"/>
    <s:url var="remoteurl2" action="stock"/>
    <sj:tabbedpanel id="remotetabs" selectedTab="0" show="true" hide="‘fade‘" collapsible="true" sortable="true">
        <sj:tab id="tab1" href="%{remoteurl1}" label="日曆"/>
        <sj:tab id="tab2" href="%{remoteurl2}" label="股價"/>
    </sj:tabbedpanel>

</body>
</html>
  • Action: 在 idv.steven.demo.action 這個 package 中增加一個命名為 CalendarActoin 的類別,如下,其實,這個類別的名稱並不重要,因為上面 jsp 程式觸發 calendar action 時,struts 是在 @Action 尋找其 value 等於 calender 的  method 來執行。如下的 calender method 的設定說明了,當這個 method 傳回 "success" 值,網頁會導向 /jsp/calendar.jsp。
package idv.steven.demo.action;

import java.util.Date;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opensymphony.xwork2.ActionSupport;

public class CalendarAction extends ActionSupport {
    private static final long serialVersionUID = 1840098879054587910L;

    final static Logger logger = LoggerFactory.getLogger(CalendarAction.class);

    private String selectedDate;

    //action method
    @Action(value = "/calendar", results = { @Result(location = "/jsp/calendar.jsp", name = "success") })
    public String calendar() throws Exception {
        return SUCCESS;
    }

    @Action(value = "/showDate", results = { @Result(location = "/jsp/showDate.jsp", name = "success") })
    public String showDate() throws Exception {
        return SUCCESS;
    }

    //getter & setter method
    public String getSelectedDate() {
        return selectedDate;
    }

    public void setSelectedDate(String selectedDate) {
        this.selectedDate = selectedDate;
    }
}
  • calendar.jsp: 這個網頁使用 datepicker tag 來顯示一個日曆,在使用者按下按鈕時,會觸發 showDate action,並將這個 action 的傳回結果會顯示在命名為 result 的 div tag 上。至於 showDate action 的程式已在上面的 CalendarAction 類別裡了,在那個類別裡可以找到一個有 @Action 上的 value 為 showDate 的 method,使用者按下按鈕就是會將 selectedDate 的值傳過去,去執行這個 method,這個 method 執行完者會將網頁導向 /jsp/showDate.jsp。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>日曆</title>
    <sj:head jqueryui="true"/>
</head>
<body>

<s:form id="form" theme="xhtml">
    <sj:datepicker id="selectedDate" name="selectedDate" label="請選擇日期" displayFormat="yy/mm/dd" />
    <sj:submit
        href="showDate"
        targets="result"
        value="送出"
        indicator="indicator"
        button="true"
    />

</s:form>

<sj:div id="result" />

</body>
</html>
  • showDate.jsp: 顯示結果,只有一行程式,簡單的將日期顯示出來,於是就像文章最開頭的畫面顯示的,於按鈕下顯示出使用者選擇的日期。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>

${selectedDate}
时间: 2024-10-27 18:08:16

struts2 jQuery tag (1)的相关文章

struts2 jQuery tag (2)

繼續上一篇關於 struts 2 jQuery tag 的介紹,這裡要 demo 一個很有用的 tag --- grid ! 如下圖是執行出來的結果. struts jQuery tag 提供的 grid 功能非常強大,可以排序.翻頁.編輯,這些進階的功能留給鄉民們自行研究,這裡只簡單的從資料庫撈出選定日期的資料,顯示在 grid 上.struts.xml 及 index.jsp 的內容沒有改變,請看上一篇的內容.其餘說明如下: 專案結構: 所有檔案的列表,因為這裡的股票資料是存在資料庫,整合了

struts2 自定义tag标签

在项目中可能有很多相同的jsp页面表示功能,这时可以使用自定义的tag进行定义,渐少重复的工作量便于日后维护! 下面就基于struts2进行自定义标签的定义与实现: 首先:自定义类MyTag继承struts2的Component package cookielogin; import java.io.IOException; import java.io.Writer; import org.apache.struts2.components.Component; import com.open

struts2+jquery 实现ajax登陆

一.新建一个web项目:test,配置好struts2的环境(详细配置见:http://www.cnblogs.com/wuweidu/p/3841297.html)       导入Jquery的js文件到项目 二.在com.action包下,新建一个loginAction.java loginAction.java的代码如下 package com.action; import org.apache.struts2.convention.annotation.Action; import o

struts2 官方系列教程三:使用struts2 标签 tag

避免被爬,先贴上本帖地址:struts2 官方系列教程一:使用struts2 标签 tag http://www.cnblogs.com/linghaoxinpian/p/6901316.html 本教材假定你已完成了HelloWorld项目,你可以在 struts2 官方系列教程三:使用struts2 标签 tag 下载本章节的代码 在上一节教程中,我们在index.jsp中使用 url tag 创建了一个超链接hello.action 这节我们将探索struts2中其它tags Web应用程

Struts2+Jquery文件上传

简单的文件上传满足不了需求,我需要做一个异步上传的功能,先写个简单的例子. Struts2 + Jquery 准备工作:struts2所需jar包,struts2的Json支持,jquery.js ajaxfileupload.js 1:pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

jquery tag页签切换

? $(document).ready(function () {     var tag=$(".tags");     tag.mouseover(function(){         $(this).addClass("tagOn").siblings().removeClass("tagOn");         var index =  tag.index(this);         $("#tagsBody")

struts2+jquery+json集成

以下采用struts2+jquery+json模拟一个案例.当点击提交按钮时会把输入的数据提交到后台,然后从后台获取数据在客户端显示. 效果如下: 接下来为struts2+jquery+json集成步骤: 1.新建一个web工程,导入struts2+jquery+json所需jar,如下图 目录结构图 2.创建实体类User package com.ljq.bean; import java.io.Serializable; @SuppressWarnings("serial") pu

Struts2+JQuery+JSON实现异步交互

Struts2+JQuery+JSON实现异步交互,包括从后台获得单个值.对象.List和Map数据并从前台的表达中获取值把值进行序列化通过JQuery的$.ajax({})传到后台和后台的对象进行绑定. 第一步:在MyEclipse中创建JavaWeb工厂并把Struts2 和 json的jar包添加到工程中添加完成后的工程图是: 第二步:创建后台: 1. UserInfo实体类: Userinfo实体类代码: package struts2jsonjquery.test.entity; im

struts2 + jquery + json 简单的前后台信息交互

ajax 是一种客户端与服务器端异步请求的交互技术.相比同步请求,大大提高了信息交互的速度和效率.是当下非常实用和流行的技术. 这里简单的说明 struts2 + jquery + json 下的 信息传递. 1 . 首先创建一个 静态页面 ,然后在 脚本中 写一个 ajax 方法如下: $.ajax({ type : "get" , url : "ajax/ajax?time="+Math.random() , datatype : "json"