check form is null
參考資料:JS form check empty
2017年2月20日 星期一
2017年2月19日 星期日
JAVA-Struts2 入門初體驗 ( 四 )__參數傳遞__Jsp to Action
在上述幾篇講到有關如何建置 Strut2 的專案
此篇會提到要如何 收 / 送 資料
我們先來講要如何把頁面資料送至後端處理,方法:
1 . 用網頁標籤內的 name 來對應到 Action 內的 Value ( get / set )
2 . 用網頁標籤內的 name 來對應到 Action 內的 Bean ( get / set )
3 . 用網頁的表單方式統捆起來後 Action 實作 Module( form get/set )
簡單分析以上幾種方法
1 . 如果用第一種,之後 Action 一定看起來凌亂不堪,但初學好入手。
2 . 第二與第三差別在於頁面宣告的長度
以下我們就針對以上方法寫下範例:
1 . 用一般參數 set/get
仔細看 Action 部分,如果只有兩個參數還好,如果是十幾個?
整體偏程式碼都被 set /get 塞爆了
hello.jsp
Action.java
說明:Jsp 的標籤名稱對應在 Action 內,並且設置 Set / Get
2 . 用 Bean 來
User.java
說明:
Action.java
說明:
3 . Module
User
同上方法 User.java
Action
參考資料:Struts2的三种传值方式比较(附demo)
參考資料:struts2 actions - Multiple Methods & Multiple classes
此篇會提到要如何 收 / 送 資料
我們先來講要如何把頁面資料送至後端處理,方法:
1 . 用網頁標籤內的 name 來對應到 Action 內的 Value ( get / set )
2 . 用網頁標籤內的 name 來對應到 Action 內的 Bean ( get / set )
3 . 用網頁的表單方式統捆起來後 Action 實作 Module( form get/set )
簡單分析以上幾種方法
1 . 如果用第一種,之後 Action 一定看起來凌亂不堪,但初學好入手。
2 . 第二與第三差別在於頁面宣告的長度
以下我們就針對以上方法寫下範例:
1 . 用一般參數 set/get
仔細看 Action 部分,如果只有兩個參數還好,如果是十幾個?
整體偏程式碼都被 set /get 塞爆了
hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-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>Insert title here</title>
</head>
<body>
<!-- 皆可使用,二選一
<form action="hello" method="post" name="form">
姓名: <input type="text" name="userName" /><br/>
電話: <input type="text" name="userPhone" /><br/>
<input type="submit" value="提交"/><br/>
</form>
-->
<!-- struts 標籤 </form>
<form action="hello" method="post" name="form">
姓名: <s:textfield name="userName"/><br/>
電話: <s:textfield name="userPhone"/><br/>
<s:submit value="提交"/> <br/>
</form>
</body>
</html>
Action.java
說明:Jsp 的標籤名稱對應在 Action 內,並且設置 Set / Get
package com.brian.example.action;
public class HelloAction {
private String userName;
private String userPhone;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
.( userPhone set/get )
.
.
.
public String execute() {
System.out.println(getUserName() + "," + getUserPhone());
return "success";
}
}
2 . 用 Bean 來
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-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>Insert title here</title>
</head>
<body>
<form action="hello" method="post">
姓名: <s:textfield name="user.userName"/><br/>
電話: <s:textfield name="user.userPhone"/><br/>
<s:submit value="提交"/> <br/>
</form>
</body>
</html>
User.java
說明:
package com.brian.example.action;
public class User {
private String userName;
private String userPhone;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPhone() {
return userPhone;
}
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
}
Action.java
說明:
package com.brian.example.action;
public class HelloAction {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute() {
try {
if(user.getUserName() != null || user.getUserPhone() != null) {
System.out.println(user.getUserName() + " : " + user.getUserPhone() );
}
} catch (Exception e ) {
System.out.println(e.toString());
}
return "success";
}
}
3 . Module
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-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>Insert title here</title>
</head>
<body>
<form action="hello" method="post" name="user">
姓名: <s:textfield name="userName"/><br/>
電話: <s:textfield name="userPhone"/><br/>
<s:submit value="提交"/> <br/>
</form>
</body>
</html>
User
同上方法 User.java
Action
package com.brian.example.action;
import com.opensymphony.xwork2.ModelDriven;
public class HelloAction implements ModelDriven<User> {
private User user = new User();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public User getModel() {
return user;
}
public String execute() {
try {
if (user.getUserName() != null || user.getUserPhone() != null) {
System.out.println(user.getUserName() + " : " + user.getUserPhone());
}
} catch (Exception e) {
System.out.println(e.toString());
}
return "success";
}
}
參考資料:Struts2的三种传值方式比较(附demo)
參考資料:struts2 actions - Multiple Methods & Multiple classes
2017年2月18日 星期六
Spring_Struts2_Hebernat_資源配置
此章節是把練習常用的 maven 集合在一起
如果要使用
起把不必要的去除
web.xml
spring mvc 不適用
只需看 pom.xml 和 web.xml 擺放位置
歡迎轉載,請註明出處。
如果要使用
起把不必要的去除
<dependencies>
<!-- Spring core & mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>
<!-- Servlet Spec -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<!-- Json -->
<!-- <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId>
<version>2.8.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId> <version>2.8.5</version>
</dependency> -->
<dependency><!-- jackson -->
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.4.2</version>
</dependency>
<!-- 添加JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.1.8</version>
</dependency>
</dependencies>
web.xml
spring mvc 不適用
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Struts 2 Web Application</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>*.action</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
只需看 pom.xml 和 web.xml 擺放位置
歡迎轉載,請註明出處。
2017年2月17日 星期五
JAVA-Struts2 入門初體驗 ( 三 )__註記型
此次 Struts2 配置用註解來完成
所以以此篇來說
就不用放置設定檔
首先在放置 pom.xml 放置用得到的 jar
並且設置完基本的 web.xml 設定
連結:設定前置動作
註記型的 struts.xml 不用添加
在講述之前
先快速說明一下要如何進入此情境
以便於日後快速回想
( 缺圖 )
概述
一般頁面
一般頁面但有多個導頁或計算
一般頁面但有多個方法
此次註解說明:
@Namespace : 空間配置
@ResultPath : 默認情況下,它會找到結果頁在 WEB-INF/content/ 文件夾
@Result : 結果參照
@Action : 對應動作
results : 多種結果集合
location : 資源位置
一般頁面
返回的結果對應到上方 Result 所宣告的頁面
一般頁面但有多個導頁或計算
我們就會用此結果導致對應頁面。
一般頁面但有多個方法
參考資料:Struts 2
歡迎轉載,請註明出處。
所以以此篇來說
就不用放置設定檔
首先在放置 pom.xml 放置用得到的 jar
並且設置完基本的 web.xml 設定
連結:設定前置動作
註記型的 struts.xml 不用添加
在講述之前
先快速說明一下要如何進入此情境
以便於日後快速回想
( 缺圖 )
概述
一般頁面
一般頁面但有多個導頁或計算
一般頁面但有多個方法
此次註解說明:
@Namespace : 空間配置
@ResultPath : 默認情況下,它會找到結果頁在 WEB-INF/content/ 文件夾
@Result : 結果參照
@Action : 對應動作
results : 多種結果集合
location : 資源位置
一般頁面
http://localhost:8080/ProjectName/User/hello.action
說明:/User/hello.action 執行 hello 底下的 execute 方法返回的結果對應到上方 Result 所宣告的頁面
package com.brian.example.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;
@Namespace("/User")
@ResultPath(value="/")
@Result(name="success",location="/WEB-INF/jsp/hello.jsp")
public class HelloAction {
@Action(value="hello")
public String execute(){
return "success";
}
}
一般頁面但有多個導頁或計算
http://localhost:8080/HelloStruts2Ann/User/userData.action
說明:執行對應的 userData 方法,但可能內部有邏輯判斷影響輸出的頁面我們就會用此結果導致對應頁面。
package com.brian.example.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;
@Namespace("/User")
@ResultPath(value = "/")
public class UserDataAction {
@Action(value="userData", results={
@Result(name="success",location="/WEB-INF/jsp/userData.jsp"),
@Result(name="fail",location="/WEB-INF/jsp/fail.jsp")
})
public String userData(){
String aaa = "123";
if("aaa".equals(aaa)){
// doSomething
return "fail";
}
return "success";
}
}
一般頁面但有多個方法
http://localhost:8080/HelloStruts2Ann/User/userData1.action
orhttp://localhost:8080/HelloStruts2Ann/User/userData2.action
說明:藉由不同對應的 uri 對應到對應的方法。package com.brian.example.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;
@Namespace("/User")
@ResultPath(value = "/")
public class UserDataAction {
@Action(value="userData1", results={
@Result(name="success",location="/WEB-INF/jsp/userData.jsp")
})
public String userData1(){
return "success";
}
@Action(value="userData2", results={
@Result(name="success",location="/WEB-INF/jsp/hello.jsp"),
@Result(name="fail",location="/WEB-INF/jsp/fail.jsp")
})
public String userData2(){
// return "fail";
return "success";
}
}
參考資料:Struts 2
歡迎轉載,請註明出處。
2017年2月16日 星期四
JAVA-Struts2 攔截器 Interceptor ( 二 )__實作
上一篇 : JAVA-Struts2 攔截器 Interceptor ( 一 )__說明
此篇是實作上篇所說明的程式碼
以下是自定義攔截器
歡迎轉載,請註明出處。
此篇是實作上篇所說明的程式碼
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<package name="user" namespace="/User" extends="struts-default">
<!-- 攔截器 -->
<interceptors>
<!-- (單一)宣告自定義攔截器 -->
<interceptor name="MyInterceptor" class="com.brian.example.interceptor.MyInterceptor"></interceptor>
<!-- (組合)定義其他攔截器,可引用其他攔截器 -->
<interceptor-stack name="defaultInterceptorStack">
<interceptor-ref name="MyInterceptor"></interceptor-ref>
<interceptor-ref name="i18n"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
<!-- (組合)定義其他攔截器,可引用其他攔截器 -->
<interceptor-stack name="defaultInterceptorStack111">
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 以下功能是針對 "全部" action ,所以只要經過 struts.xml 就一定會先經過他-->
<!-- 如果有部分頁面或功能不需要到,就不要使用此功能 -->
<default-interceptor-ref name="MyInterceptor"></default-interceptor-ref>
<!-- 全部對應 result 頁面 -->
<global-results>
<result name="block">/WEB-INF/jsp/block.jsp</result>
</global-results>
<action name="hello" class="com.brian.example.action.HelloAction"
method="execute">
<result name="success">/WEB-INF/jsp/hello.jsp</result>
</action>
<action name="data" class="com.brian.example.action.DataAction"
method="execute">
<interceptor-ref name="MyInterceptor"/>
<result name="success">/WEB-INF/jsp/data.jsp</result>
</action>
</package>
</struts>
以下是自定義攔截器
package com.brian.example.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class MyInterceptor implements Interceptor {
private static final long serialVersionUID = 1L;
@Override
public void destroy() {
System.out.println("-----攔截器銷毀-----");
}
@Override
public void init() {
System.out.println("-----攔截器生成-----");
}
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("---------攔截器---------");
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
// 判斷某事件,例如:Token. Record 記錄是否存在
if (session.getAttribute("token")!= null) {
// 建議
System.out.println("Hello" + session.getAttribute("token"));
// 如果存在,直接略過此攔截
return invocation.invoke();
} else {
// 如果不存在,則導至某頁面
return "block";
}
}
}
歡迎轉載,請註明出處。
JAVA-Struts2 攔截器 Interceptor ( 一 )__說明
想必大家之前也聽過 Filter
結果現在又跑出一個 Interceptor ( 攔截器 )
此功能可用於資料的判斷,比如:
1 . 此使用者是否已經登入
2 . 此使用者是否靜置不動一段時間
...等
這些都是很實用的功能
要講述此功能前要先講一個情境
以便於日後更快了解要如何實際應用
現在有兩個頁面
A : 歡迎頁面
B : 會員資料頁面( 需通過攔阻器的驗證才可進入 )
想必大家都知道攔阻器的功能吧
我們來把 A 和 B 串成一個流程
這就是大家最熟悉的登入會員流程了
以下開始講程式面的說明
通常都是把攔阻器寫在 struts.xml 檔案內
攔阻器的設置如下
這部分只是類似宣告
還未開始被使用
以上攔截器設置完後
要如何使用??
1 ) 全域使用:所有的 Action 都先被攔截
皆可替換您在上方設置的任一個攔截器
2 ) 部分使用:針對部分設置的 Action 才被先攔截
皆可替換您在上方設置的任一個攔截器
最後,如果要做自己專屬的攔阻器
必須要實作 Interceptor
包括以下 :
1 . init:生成時。
2 . destroy:銷毀時。
3 . intercept:監聽,如果有攔截到特定資料,要如何處理。
參考資料:菜鸟学SSH(四)——Struts2拦截器
參考資料:从struts2拦截器到自定义拦截器
參考資料:struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
參考資料:Struts拦截器及Struts.xml文件详解
歡迎轉載,請註明出處。
結果現在又跑出一個 Interceptor ( 攔截器 )
此功能可用於資料的判斷,比如:
1 . 此使用者是否已經登入
2 . 此使用者是否靜置不動一段時間
...等
這些都是很實用的功能
要講述此功能前要先講一個情境
以便於日後更快了解要如何實際應用
現在有兩個頁面
A : 歡迎頁面
B : 會員資料頁面( 需通過攔阻器的驗證才可進入 )
想必大家都知道攔阻器的功能吧
我們來把 A 和 B 串成一個流程
這就是大家最熟悉的登入會員流程了
以下開始講程式面的說明
通常都是把攔阻器寫在 struts.xml 檔案內
攔阻器的設置如下
這部分只是類似宣告
還未開始被使用
<!-- 攔截器 -->
<interceptors>
<!-- (單一)宣告自定義攔截器 -->
<interceptor name="MyInterceptor" class="com.brian.example.interceptor.MyInterceptor"></interceptor>
<!-- (組合)定義其他攔截器,可引用其他攔截器 -->
<interceptor-stack name="defaultInterceptorStack">
<interceptor-ref name="MyInterceptor"></interceptor-ref>
<interceptor-ref name="i18n"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
<!-- (組合)定義其他攔截器,可引用其他攔截器 -->
<interceptor-stack name="defaultInterceptorStack111">
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
以上攔截器設置完後
要如何使用??
1 ) 全域使用:所有的 Action 都先被攔截
皆可替換您在上方設置的任一個攔截器
<interceptors>
.
.
.
</interceptors>
<!-- 以下功能是針對 "全部" action ,所以只要經過 struts.xml 就一定會先經過他-->
<!-- 如果有部分頁面或功能不需要到,就不要使用此功能 -->
<default-interceptor-ref name="MyInterceptor"></default-interceptor-ref>
2 ) 部分使用:針對部分設置的 Action 才被先攔截
皆可替換您在上方設置的任一個攔截器
<interceptors>
.
.
.
</interceptors>
<!-- 只針對此 Action 先前攔截 -->
<action name="data" class="com.brian.example.action.DataAction"
method="execute">
<interceptor-ref name="MyInterceptor"/>
<result name="success">/WEB-INF/jsp/data.jsp</result>
</action>
最後,如果要做自己專屬的攔阻器
必須要實作 Interceptor
包括以下 :
1 . init:生成時。
2 . destroy:銷毀時。
3 . intercept:監聽,如果有攔截到特定資料,要如何處理。
參考資料:菜鸟学SSH(四)——Struts2拦截器
參考資料:从struts2拦截器到自定义拦截器
參考資料:struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
參考資料:Struts拦截器及Struts.xml文件详解
歡迎轉載,請註明出處。
2017年2月13日 星期一
JAVA-Struts2 入門初體驗 ( 二 )__配置型
前一篇我們有簡單提到專案大概架構
連結:設定前置動作
在講述之前
先快速說明一下要如何進入此情境
以便於日後快速回想
( 缺圖 )
概述
一般頁面
一般頁面但有多個導頁或計算
一般頁面但有多個方法
接下來我們添加:struts.xml 設定檔
此篇只換講到 action 和 result 一些基本的配置
一般
說明:沒有特定的動作,單純顯示對應的頁面
一般執行
說明:單一流程結果,執行的方法會對應到指定的 class 下的 method
一般執行但有多個結果
說明:method 執行後出現多種不同的結果
歡迎轉載,請註明出處。
此篇我們要來實作用:設定檔案方法來完成
連結:設定前置動作
在講述之前
先快速說明一下要如何進入此情境
以便於日後快速回想
( 缺圖 )
概述
一般頁面
一般頁面但有多個導頁或計算
一般頁面但有多個方法
接下來我們添加:struts.xml 設定檔
此篇只換講到 action 和 result 一些基本的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<package name="user" namespace="/User" extends="struts-default">
<!-- 一般 -->
<action name="hello">
<result>/WEB-INF/jsp/hello.jsp</result>
</action>
<!-- 一般執行 -->
<action name="Login" class="com.brian.example.action.HelloAction"
method="execute">
<result>/WEB-INF/jsp/hello.jsp</result>
</action>
<!-- 一般執行但有多結果 -->
<action name="Search" class="com.brian.example.action.UserDataAction"
method="execute">
<result name="success">/WEB-INF/jsp/success.jsp</result>
<result name="fail">/WEB-INF/jsp/fail.jsp</result>
</action>
</package>
</struts>
一般
說明:沒有特定的動作,單純顯示對應的頁面
http://localhost:8080/ProjectName/User/hello.action
一般執行
說明:單一流程結果,執行的方法會對應到指定的 class 下的 method
http://localhost:8080/HelloStruts2Ann/User/Login.action
package com.brian.example.action;
public class HelloAction {
public String execute(){
return "success";
}
}
一般執行但有多個結果
說明:method 執行後出現多種不同的結果
http://localhost:8080/HelloStruts2Ann/User/Search.action
package com.brian.example.action;
public class UserDataAction {
public String userData(){
// doSomething
// return "fail";
return "success";
}
}
歡迎轉載,請註明出處。
2017年2月8日 星期三
訂閱:
文章 (Atom)





