摘要:那么后綴一定要寫如果配置后綴為。不允許直接訪問資源什么情況不配置即處理的答案當只是需要跳轉到下資源的時候。
前言
上篇Struts博文已經講解了Struts的開發步驟以及執行流程了.....對Struts的配置文件有了了解.....本博文繼續講解Struts在配置的時候一些值得要學習的細節...
通配符 為什么要學習通配符在講解通配符之前,我們來看一下需求.....
現在我的Action中有兩個方法,處理登陸和處理注冊:
public class PrivilegeAction extends ActionSupport { public String login() { System.out.println("我是登陸"); return "success"; } public String register() { System.out.println("我是注冊"); return "success"; } }
因此,我們就需要在struts.xml文件中配置兩個action節點
/index.jsp /index.jsp
現在我們發現:它們僅僅只有訪問路徑和方法的名稱是不一樣的....但是這卻要多配置一個action節點,會造成浪費!
于是乎通配符就應運而生了...
使用通配符改造沒有通配符之前,我們是需要配置兩個action的...有了通配符,我們是這樣做的:
/index.jsp
解釋一下:
name=privilege_*,我們用了_作為分隔符。*就是我們的通配符
{1},就是代表著第一個通配符
我們來看一下效果:
同理可得,當我們在地址欄訪問login的時候,就會執行login的方法
Struts中路徑的匹配原則有的時候,我們可能會在package節點中指定namespace名稱空間,我們在訪問對應的資源名稱的時候,就需要在前面加入相對應名稱空間的值...
比如:
名稱空間的值為“/user”
/index.jsp
那么在訪問資源的時候,就需要在項目名稱后邊加上名稱空間的值:
現在就有一個很奇怪妙的事情發生了:在名稱空間和資源路徑的中間可添加任意的路徑
但是呢,不能在名稱空間之前加入不存在的路徑:
其實這就涉及到了Struts中路徑的匹配原則,我就拿隨便拿個路徑來舉例子http://localhost:8080/user/a/a/privilege_login:
首先,Struts會把請求的資源路徑拿到,也就是privilege_login。
然后在看看有沒有/user/a/a這個名稱空間;如果有,就返回結果
如果沒有,就看看有沒有/user/a這個名稱空間;如果有,就返回結果
如果沒有,再看看有沒有/user這個名稱空間;如果有,就返回結果
直到最后,如果都沒有找到,就報錯!
看完這個例子,我們就可以知道為啥在名稱空間和資源路徑的中間可添加任意的路徑,而不能在名稱空間之前加入不存在的路徑....這就是Struts的路徑匹配原則..
Struts常量Struts2默認的訪問后綴是.action......
修改默認訪問路徑有的時候,可能根據項目的需要...我想后綴名默認并不是.action,那我該怎么辦呢??
我們在jar包上找到它的配置文件...
我們發現它的默認值是action,,
值得注意的是:兩個逗號并不是多余的
我們不可能是直接修改jar包中的配置文件的,在struts.xml文件中提供了constant節點供我們修改struts的常量...
前面已經說了,兩個逗號并不是多余的。那么直接在配置文件中配置action時,會怎么樣:
也就是說,“,”號能夠匹配空格鍵
舉例子說明:
如果配置后綴為action。那么后綴一定要寫action
如果配置后綴為action,do,。那么后綴可以是action,可以是do,也可以不寫
如果配置后綴為action,,。那么后綴可以是action,可以不寫
Struts常用的常量只有動態方法調用是我們沒有接觸過的。
那動態方法調用是怎么回事呢???這是樣的:在action節點不配置method屬性,在地址欄使用資源名稱!方法名的方式去調用業務方法
首先,我們還是來看一個需求:現在我有兩個Action,PrivilegeAction和CategoryAction
PrivilegeAction
public class PrivilegeAction extends ActionSupport { public String login() { System.out.println("我是登陸"); return "success"; } public String register() { System.out.println("我是注冊"); return "success"; } }
CategoryAction
public class CategoryAction extends ActionSupport { public String add() { System.out.println("我是添加"); return "success"; } public String find() { System.out.println("我是查找"); return "success"; } }
在struts.xml文件中配置
/index.jsp /index.jsp
我們發現一個問題,只要是方法返回值是success,那么就跳轉到首頁....如果有大量Action方法返回的都是success,那么就要寫很多很多個result節點了..
使用跳轉全局視圖代碼就可以變成是這樣子了,注意:global-results節點需要在action節點的上面
/index.jsp
效果:
Action節點中的默認配置一份相對完整的action節點是這樣子的:
method
如果我們不寫method的話,默認執行的是execute()方法,execute()方法默認返回值是SUCCESS
public class BBAtion extends ActionSupport { @Override public String execute() throws Exception { System.out.println("我是execute()"); return SUCCESS; } }class
如果不寫class,class默認執行的action在struts-default有配置
什么時候會不寫class?就是需要跳轉到WEB-INF目錄下的資源的時候.....這就類似與Servlet需要跳轉到WEB-INF下的資源。【Tomcat不允許直接訪問WEB-INF資源】
/WEB-INF/index.jsp
如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同學,可以關注微信公眾號:Java3y
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68723.html
摘要:要是使用到日歷的話,我們想到使用這個日歷類上面僅僅是我個人總結的要點,如果有錯誤的地方還請大家給我指正。 納稅服務系統總結 納稅服務系統是我第一個做得比較大的項目(不同于javaWeb小項目),該項目系統來源于傳智Java32期,十天的視頻課程(想要視頻的同學關注我的公眾號就可以直接獲取了) 我跟著練習一步一步完成需求,才發覺原來Java是這樣用來做網站的,Java有那么多的類庫,頁面...
摘要:前言由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創的技術文章歡迎關注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數據庫連接池...
摘要:前言前面博文基本把的配置信息講解完了本博文主要講解對數據的處理開發的三種方式在第一次我們寫開發步驟的時候,我們寫的是繼承著類的為啥我們繼承了類呢下面我就會講解到繼承類我們來看一下干了什么也就是說,如果我們在類中需要用到為我們提供的數據校驗等 前言 前面Struts博文基本把Struts的配置信息講解完了.....本博文主要講解Struts對數據的處理 Action開發的三種方式 在第一...
摘要:當你真正到公司里面從事了幾年開發之后,你就會同意我的說法利用找工作,需要的就是項目經驗,項目經驗就是理解項目開發的基本過程,理解項目的分析方法,理解項目的設計思 Java就是用來做項目的!Java的主要應用領域就是企業級的項目開發!要想從事企業級的項目開發,你必須掌握如下要點: 1、掌握項目開發的基本步驟 2、具備極強的面向對象的分析與設計技巧 3、掌握用例驅動、以架構為核心的主流開發...
時間:2017年08月16日星期三說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 課程目錄 1.ssh知識點回顧 2.搭建ssm開發環境 3.struts2整合spring 4.spring整合hibernate 5.案例:使用ssh框架開發...
閱讀 1201·2021-11-24 11:16
閱讀 3428·2021-11-15 11:38
閱讀 1920·2021-10-20 13:47
閱讀 546·2021-09-29 09:35
閱讀 2192·2021-09-22 15:17
閱讀 1013·2021-09-07 09:59
閱讀 3374·2019-08-30 13:21
閱讀 2904·2019-08-30 12:47