ssh中的相對路徑與絕對路徑的問題


                                                                                                                                                                                                                        

    一:前言:自己在學習ssh的時候常常被路徑給迷惑,就比如在剛剛學習jsp的servlet時,絕對路徑和相對路徑我就弄混了,所以專門寫了一篇博客來記載。而現在自己是在學ssh的時候在此遇到路徑問題,本來是可以不用理會的,但是我試驗了幾次,覺得和jsp中的servlet中的有區別,所以還是記載下來吧。一個中午沒睡覺,好困阿。

                                                                                                                                                                                                                        

    二:內容

      這次寫的東西是我自己剛剛學完ssh的皮毛,仿作了一個簡單的增刪改查的功能,所以就拿着說明。具體內容分為以下幾部分:

       (1):ssh中的絕對路徑和相對路徑問題

       (2):struts2中的namespace的問題

       (3):jsp文件放在WEB-INF目錄下的一些安全問題和訪問問題

 

     三:具體內容:

      (一):ssh中的相對路徑和絕對路徑

        首先,就開門見山,直接上代碼來說吧。下面的代碼jsp頁面代碼中我們主要看的是

<a href="${pageContext.request.contextPath}/AAA/listPersonAction">顯示用戶信息</a>這行代碼的變化。我的項目名字是:http://localhost/ssh  線給出主界面的網址:http://localhost/ssh/index.jsp。如果點第一個的鏈接會直接通過action跳轉到list.jsp頁面,網頁上的路徑是這樣顯示的:http://localhost/ssh/AAA/listPersonAction。點擊第二個沒有報錯,但是沒有數據顯示。顯示的路徑是這樣的:http://localhost/AAA/listPersonAction,也就是說在第二個路徑中即是絕對路徑在找的時候的網址是http:localhost+自己寫的絕對路徑(在此就是/AAA/listPersonAction);在說明白點就是把項目名稱去掉了。結果找不到action。在此我只想告訴大家的時此時的絕對路徑沒有項目名稱 。謹記謹記!!!。而第三個的相對路徑其實沒什么,就是相對當前的網址:http://localhost/index.jsp-------------->http://localhost/AAA/listPersonAction.

  下面的是鏈接的代碼(第一個代碼是完整的路徑,第二個是絕對路徑路徑,第三個是相對路徑):

1 <body>
2   <h1>第二個頁面--web-inf頁面中</h1>
3       <a href="${pageContext.request.contextPath}/WebRoot/WEB-INF/page/save.jsp">保存用戶信息</a>
4       <a href="${pageContext.request.contextPath}/AAA/listPersonAction">顯示用戶信息</a>
5   </body>
View Code
1 <body>
2   <h1>第二個頁面--web-inf頁面中</h1>
3       <a href="${pageContext.request.contextPath}/WebRoot/WEB-INF/page/save.jsp">保存用戶信息</a>
4       <a href="/AAA/listPersonAction">顯示用戶信息</a>
5   </body>
View Code
1 <body>
2   <h1>第二個頁面--web-inf頁面中</h1>
3       <a href="${pageContext.request.contextPath}/WebRoot/WEB-INF/page/save.jsp">保存用戶信息</a>
4       <a href="AAA/listPersonAction">顯示用戶信息</a>
5   </body>
View Code

  在附上action的代碼:

1 <package name="ssh" extends="struts-default" namespace="/AAA">
2             <action name="savePersonAction" class="savePersonAction">
3                 <result name="success" type="redirect">listPersonAction</result>
4             </action>
5             
6             <action name="listPersonAction" class="listPersonAction">
7                 <result name="success">/WEB-INF/page/list.jsp</result>
8             </action>
View Code

  

 

  (二):在來說namespace的問題。剛剛接觸namespace的時候覺得這家伙真么什么用處,但是我自己深入了解了之后,覺得還是很有用的,他能幫我們找到對應的action。首先先看看struts.xml中,package中我配置了一個namespace:/AAA,而且在上面的jsp的代碼中也看到我的鏈接里面都加了一個/AAA進去,所以我說的直白點,這就是為了我們找到對應的action。在通過action跳轉的時候我們都可以這樣寫${pageContext.request.contextPath}/namespace/action.action的形式。這樣最簡單明了了。這里我寫車工AAA是為了更加凸顯出不同。

 

 

 

  (三):在來說一說把jsp的頁面放在WEB-INF下的安全和訪問的問題,我們把jsp頁面放在WEB-INF主要是為了安全的問題(這個是百度和一本叫做javaEE核心上面有講)。

所以在我上面給出的代碼中可以看到我有一個save.jsp,如果點了那個鏈接,我顯示錯誤:404的路徑錯誤,那么為什么會是404錯誤了,就是因為把jsp頁面放在WEB-INF下是不允許直接訪問的,但是可以通過<jsp:forward/>跳轉(我有實驗),servlet(沒實驗過,百度的結果),action(有實驗,成功,的確可以)等方式進行跳轉。道友們可以自己實驗下。

 

                                                                                                                                                                                                                              

  (四):結束語

  今天和一個工作的人聊天,他告訴我java基礎要好,這樣才能很快適應其他東西。而且說“學沒學好java基礎決定能不能進公司,其他的決定了你進公司的薪水”。我覺得這句話很經典啊。“萬丈高樓平地起啊”,所以基礎也好重要啊。努力加油。我要好好補習下java的基礎啊。我自己也不知道我的java基礎怎么樣。come on。沒出社會的小菜鳥就是這樣。默默奮斗吧。騷年!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM