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