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
######SQL多count查詢(不用子查詢,條件加對了就行)(注意:條件位置可變化。)》分析領導的實現過程。心得筆記。
===》分析領導的實現過程。心得筆記。 #業務場景:不同企業下有各自的角色。角色下有許可權(角色:許可權=多對多,有中間表)和使用者(角色:使用者=一對多,使用者表有個角色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等,你用到那種格式就加那種!加的時候一點過要注意,將