1. 程式人生 > >Struts2之動態方法呼叫(優點:呼叫同一個action中的多個方法不需要在配置檔案中寫多個指向相同action類的的action節點只需要一個action節點就行)

Struts2之動態方法呼叫(優點:呼叫同一個action中的多個方法不需要在配置檔案中寫多個指向相同action類的的action節點只需要一個action節點就行)

在表單action值裡指定所呼叫的action中的哪個方法而不是藉助配置檔案action節點的method屬性

1 UserAction類

package org.action;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.model.User;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class UserAction extends ActionSupport implements  
ModelDriven<User/*這裡需要填寫Person物件*/> {
    //這種實現ModelDriven的模型驅動需要的模型要例項化


    private User user=new User();
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    public String add() {
        return "add";
    }
    
    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return "minus";
    }
    @Override
    public User getModel() {
        // TODO Auto-generated method stub
        return user;
    }

}

2model類

package org.model;

public class User {
    private String name;
    private String password;
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
 
}


3struts.xml

<?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">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" > </constant>
    <package name="default" extends="struts-default">
        <action name="getuser" class="org.action.UserAction">
            <result name="add">/success.jsp</result>
            <result name="minus">/error.jsp</result>

            <interceptor-ref name="modelDriven"></interceptor-ref>  
            <interceptor-ref name="defaultStack"></interceptor-ref>  
        </action>
        
            
    </package>
</struts>    

4首頁

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
 
  <body>
    <form action="getuser!add" method="post"> 注:action值可以改成getuser就會呼叫預設方法excute
    使用者名稱:<input type="text" name="user.name"><br>
    密碼:<input type="text" name="user.password">
    <input type="submit" value="提交">
    </form>
  </body>
</html>
5 轉發頁面error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'error.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
 
  <body>
   username:<s:property value="user.name" /><br>
 password:<s:property value="user.password" />
  </body>
</html>

6轉發頁面 success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'success.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
 
  <body>
  使用者名稱:<s:property value="user.name" /><br>
 密碼:<s:property value="user.password" />
  </body>
</html>


7執行截圖;

(1)預設呼叫excute方法轉發到error.jsp



2呼叫add方法



相關推薦

Struts2動態方法呼叫優點呼叫同一個action方法需要配置檔案指向相同action的的action節點需要一個action節點

在表單action值裡指定所呼叫的action中的哪個方法而不是藉助配置檔案action節點的method屬性 1 UserAction類 package org.action; import java.io.IOException; import javax.servle

######SQLcount查詢不用子查詢,條件加對了注意條件位置可變化。》分析領導的實現過程。心得筆記。

===》分析領導的實現過程。心得筆記。 #業務場景:不同企業下有各自的角色。角色下有許可權(角色:許可權=多對多,有中間表)和使用者(角色:使用者=一對多,使用者表有個角色id) #表結構:看檔案。 #需求:登入使用者所屬企業id, #1 SELECT a.PB_R

JavaWeb學習動態頁面技術JSP/EL/JSTL

常用標簽 cat lang each ems tty com HR html4 JSP技術 1、jsp腳本和註釋 jsp腳本: 1、<% java代碼%> 內部的Java代碼翻譯到service方法的內部 2、<%

JavaEE動態頁面技術JSP/EL/JSTL

add 引入 gis 參數 運行原理 param bin light 其他 動態頁面技術(JSP/EL/JSTL) JSP技術 jsp腳本和註釋 jsp腳本: 1)<%java代碼%> ----- 內部的java代碼翻譯到service方法的內部 2)<%

設計模式單例模式關鍵詞設計模式/單例模式/單件模式

設計模式 單例模式 定義 單例模式:允許一些物件中只存在 1 個例項。 類裝飾器版本 1:使用 1 個全域性字典,儲存所有類的例項。 instances = {} def getInstances(aClass, *args): if aClass not in i

SpringMVC總結自定義註解許可權註解

目錄 1.前言 2.自定義一個註解 3. 定義一個相應的攔截器 4.在springMVC配置檔案中進行配置 5.在springMVC controller中使用例項 1.前言 在開發過程中,我們想給控制器的某些方法進行控制訪問許可權,或者我們需要做方法呼叫日誌記錄

SpringMVC總結攔截器Interceptor登入攔截器

目錄   1.前言 2.HandleInterceptor介面 3.攔截器實現使用者登入攔截 1.前言 使用攔截器,主要是為了攔截使用者的請求並進行相應的處理,比如通過攔截器進行使用者登入驗證,使用者許可權驗證等;SpringMVC中的攔截器攔截請求是通過實

SpringMVC總結資料轉換器時間引數轉換器

  1.前言 SpringMVC 通過反射機制對處理方法的簽名進行分析,並將請求資訊繫結到處理方法的引數中,在請求訊息到達處理方法期間,SpringMVC 還會完成資料轉換,資料格式化和資料檢驗等工作; 2.Converter轉換器 2.1 Spring在org.fra

Android動態申請許可權API23以上需求

1 package com.dragon.android.permissionrequest; 2 3 import android.Manifest; 4 import android.content.DialogInterface; 5 import android.co

動態放入後臺給的鍵值對顯示出來,然後動態返回資料難點資料格式問題

一、動態放入後臺的值 將'應發'下的鍵資料${key}放入html中,記得使用轉義字元  ``  ,這個符號實在鍵盤左上角的第二列第一個,來表示裡面寫的是html格式的程式碼。 然後 ${this.data.data['應發'][i][key]}是遍歷每行的key對應的值,

VS2013/MFC程式設計入門三十二選單VS2013選單資源詳解

前面我們已經講完了所有的常用控制元件,本節開始為大家講解選單的概念及使用。        選單簡介        選單可以分為下拉式選單和彈出式選單。        下拉式選單一般在視窗標題欄下面顯示,大家還記得我們在VS2013/MFC程式設計入門之一(利用MFC

根據經緯度計算兩點間距離別問我公式細節,我也沒明白,照搬

import java.util.HashMap; import java.util.Map;    public class MapDistance {               private static double EARTH_RADIUS = 6378.137

js動態生成變數eg載入js並使用js變數

 例如可能需要生成 test_1, test_2, test_3... (後面的數字是根據引數來的)。 所以我的函式名 應該由 var name = "test_"+num;   生成函式名  但這問題就來了。 window[name]會解析name的值如果name是個字串

五大常見演算法策略——動態規劃策略Dynamic Programming

Dynamic Programming   Dynamic Programming是五大常用演算法策略之一,簡稱DP,譯作中文是“動態規劃”,可就是這個聽起來高大上的翻譯坑苦了無數人,因為看完這個演算法你可能會覺得和動態規劃根本沒太大關係,它對“動態”和“規劃”都沒有太深的體現。   舉個最簡單的例子去先淺顯

SODBASE CEP學習十四在Studio配置檔案編輯中文

使用者在個性化設定Studio的adaptor.properties配置檔案中,因為中文unicode編碼,常會遇到中文編輯的問題。 方法如下: 1.在安裝JDK的機器上,執行native2ascii是unicode中文可正常顯示 native2ascii -reverse -encod

使用者在sudoers 檔案。此事將被報告 or usermod“sudo”組存在

有些人設定使用者為sudo使用者組裡成員也是不能使用sudo,eg: 其實這個原因很簡單,就說sudoers檔案由於某種原因寫入失敗了 自己手動寫入一下就好了,把root那行負責一下,名字改成你的使用者名稱即可 vi /etc/sudoers 再試試發現ok了 如果發現自

echarts 例項 呼叫時,渲染

<div class="chart-pic"> <div id="divMain_$commonName$" class="chart"></div> </div> <!-- ECharts單檔案引入 --&g

Python3 記錄日誌並輸出到 log 檔案方法防止輸出中文亂碼

# -*- coding: utf-8 -*- import logging.handlers LOG_FILE = r'tst.log' handler = logging.handlers.

html節點樹分享html元素間的空格會在節點樹上產生一個text節點

這個小知識點也是我偶然遇到的~~搞了半天才弄懂 根據w3c的HTML DOM標準,HTML中所有內容都是節點,當我用原生js獲取dom中的某個節點時,卻沒有拿到我想拿到的節點。。。 ht

Qt做釋出版,解決聲音和圖片、中文字型亂碼問題需要在main裡上QApplication::addLibraryPath("./plugins")才能載入圖片,有圖片,很清楚

前些天做Qt釋出版,發現居然不顯示圖片,後來才發現原來還有圖片的庫沒加!找找吧,去qt的安裝包,我裝在了F盤,在F盤F:/QT/qt/plugins,找到了plugins,這裡面有個   imageformats是圖片的庫,裡面有jpg,gif等,你用到那種格式就加那種!加的時候一點過要注意,將