Rumah Java javaTutorial 关于Struts1之url截取的详细介绍

关于Struts1之url截取的详细介绍

May 24, 2018 pm 03:19 PM
memperkenalkan terperinci

这篇文章主要介绍了Struts1之url截取_动力节点Java学院整理的相关资料,需要的朋友可以参考下

Struts1之url截取

先我们来对ActionServlet深层次进行分析。我们用断点的调试的方式来看底层源码。因为这个实例是post方式提交,所以将断点设置到doPost方法上。

 

      我们debug运行程序,进入doPost里面的方法: 

        这个方法非常重要是ActionServlet运行的核心方法。

        我们进入这个方法:

    

       再继续进入:



      我们赫然发现了这样一个方法就是processPath方法,这个方法就是截取字符串的方法。这个方法的源代码如下:

/** 
  * <p>Identify and return the path component(from the request URI) that 
  * we will use to select an <code>ActionMapping</code> with which todispatch. 
  * If no such path can be identified,create an error response and return 
  * <code>null</code>.</p> 
  * 
  * @param request The servlet request weare processing 
  * @param response The servlet response weare creating 
  * 
  * @exception IOException if an input/outputerror occurs 
  */ 
 protectedString processPath(HttpServletRequest request, 
        HttpServletResponse response) 
  throws IOException { 
 
  String path = null; 
 
  // For prefix matching, match on the path info (if any) 
  path = (String) request.getAttribute(INCLUDE_PATH_INFO); 
  if (path == null) { 
   path = request.getPathInfo(); 
  } 
  if ((path != null) && (path.length() > 0)) { 
   return (path); 
  } 
 
  // For extension matching, strip the module prefix and extension 
  path = (String) request.getAttribute(INCLUDE_SERVLET_PATH); 
  if (path == null) { 
   path = request.getServletPath(); 
  } 
  String prefix = moduleConfig.getPrefix(); 
  if (!path.startsWith(prefix)) { 
   String msg =getInternal().getMessage("processPath"); 
    
   log.error(msg + " " + request.getRequestURI()); 
   response.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); 
 
   return null; 
  } 
   
  path = path.substring(prefix.length()); 
  int slash = path.lastIndexOf("/"); 
  int period = path.lastIndexOf("."); 
  if ((period >= 0) && (period >slash)) { 
   path = path.substring(0, period); 
  } 
  return (path); 
 
}
Salin selepas log masuk

分析一下这段代码:

path = (String)request.getAttribute(INCLUDE_PATH_INFO); 
  if (path == null) { 
   path = request.getPathInfo(); 
  } 
  if ((path != null) && (path.length() > 0)) { 
   return (path); 
  }
Salin selepas log masuk

这段代码首先判断一下javax.servlet.include.path_info是否存在路径信息,这里要知道当当一个页面是以RequestDispatcher.include方式显示的话,这个属性值才存在。所以这里没有值,就会进入path=request.getPathInfo()程序中,这里的getPathInfo获取的值是相对servlet的路径信息。

// For extension matching, stripthe module prefix and extension 
  path = (String) request.getAttribute(INCLUDE_SERVLET_PATH); 
  if (path == null) { 
   path = request.getServletPath(); 
  } 
  String prefix = moduleConfig.getPrefix(); 
  if (!path.startsWith(prefix)) { 
   String msg =getInternal().getMessage("processPath"); 
    
   log.error(msg + " " + request.getRequestURI()); 
   response.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); 
 
   return null; 
  }
Salin selepas log masuk

这一段代码是判断javax.servlet.include.servlet_path是否存在值,这个也是当一个页面是以equestDispatcher.include方式显示的话,这个属性值才存在,所以这里的值没有。之后进入path = request.getServletPath();这个方法是获得返回请求URI上下文后的子串,所以这里的返回值就是“/”和访问页面名称和后缀(这里和我的mvc实例截取的是不是一样的道理)。随后进入下面代码:

path = path.substring(prefix.length()); 
  intslash = path.lastIndexOf("/"); 
  intperiod = path.lastIndexOf("."); 
  if((period >= 0) && (period > slash)) { 
   path = path.substring(0, period); 
  } 
  return (path);
Salin selepas log masuk

       这里的方法主要和我的上面的那里是一样的,主要就是去掉后缀。

Atas ialah kandungan terperinci 关于Struts1之url截取的详细介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pengenalan terperinci tentang apa itu wapi Pengenalan terperinci tentang apa itu wapi Jan 07, 2024 pm 09:14 PM

Pengguna mungkin pernah melihat istilah wapi apabila menggunakan Internet, tetapi bagi sesetengah orang mereka pasti tidak tahu apa itu wapi Berikut adalah pengenalan terperinci untuk membantu mereka yang tidak tahu untuk memahami. Apa itu wapi: Jawapan: wapi ialah infrastruktur untuk pengesahan dan kerahsiaan LAN wayarles. Ini seperti fungsi seperti inframerah dan Bluetooth, yang biasanya dilindungi berhampiran tempat seperti bangunan pejabat. Pada asasnya mereka dimiliki oleh jabatan kecil, jadi skop fungsi ini hanya beberapa kilometer. Pengenalan berkaitan wapi: 1. Wapi ialah protokol penghantaran dalam LAN wayarles. 2. Teknologi ini dapat mengelakkan masalah komunikasi jalur sempit dan membolehkan komunikasi yang lebih baik. 3. Hanya satu kod diperlukan untuk menghantar isyarat

Penjelasan terperinci sama ada win11 boleh menjalankan permainan PUBG Penjelasan terperinci sama ada win11 boleh menjalankan permainan PUBG Jan 06, 2024 pm 07:17 PM

Pubg, juga dikenali sebagai PlayerUnknown's Battlegrounds, ialah permainan shooting battle royale yang sangat klasik yang telah menarik ramai pemain sejak popularitinya pada 2016. Selepas pelancaran sistem win11 baru-baru ini, ramai pemain ingin memainkannya di win11 Jom ikuti editor untuk melihat sama ada win11 boleh bermain pubg. Bolehkah win11 bermain pubg? 1. Pada permulaan win11, kerana win11 perlu untuk membolehkan tpm, ramai pemain telah diharamkan dari pubg. 2. Walau bagaimanapun, berdasarkan maklum balas pemain, Blue Hole telah menyelesaikan masalah ini, dan kini anda boleh bermain pubg seperti biasa dalam win11. 3. Kalau jumpa pub

Pengenalan kepada fungsi Python: Pengenalan dan contoh fungsi exec Pengenalan kepada fungsi Python: Pengenalan dan contoh fungsi exec Nov 03, 2023 pm 02:09 PM

Pengenalan kepada fungsi Python: Pengenalan dan contoh fungsi exec Pengenalan: Dalam Python, exec ialah fungsi terbina dalam yang digunakan untuk melaksanakan kod Python yang disimpan dalam rentetan atau fail. Fungsi exec menyediakan cara untuk melaksanakan kod secara dinamik, membolehkan program menjana, mengubah suai dan melaksanakan kod seperti yang diperlukan semasa masa jalan. Artikel ini akan memperkenalkan cara menggunakan fungsi exec dan memberikan beberapa contoh kod praktikal. Cara menggunakan fungsi exec: Sintaks asas fungsi exec adalah seperti berikut: exec

Pengenalan terperinci sama ada pemproses i5 boleh memasang win11 Pengenalan terperinci sama ada pemproses i5 boleh memasang win11 Dec 27, 2023 pm 05:03 PM

i5 ialah siri pemproses yang dimiliki oleh Intel Ia mempunyai pelbagai versi generasi ke-11 i5, dan setiap generasi mempunyai prestasi yang berbeza. Oleh itu, sama ada pemproses i5 boleh memasang win11 bergantung pada generasi pemproses itu Mari ikuti editor untuk mempelajarinya secara berasingan. Bolehkah pemproses i5 dipasang dengan win11: Jawapan: pemproses i5 boleh dipasang dengan win11. 1. Pemproses i51 generasi kelapan dan seterusnya, generasi kelapan dan i5 seterusnya boleh memenuhi keperluan konfigurasi minimum Microsoft. 2. Oleh itu, kita hanya perlu memasuki laman web Microsoft dan memuat turun "Win11 Installation Assistant" 3. Selepas muat turun selesai, jalankan pembantu pemasangan dan ikut arahan untuk memasang Win11. 2. i51 sebelum generasi kelapan dan selepas generasi kelapan

Memperkenalkan kaedah penalaan bunyi Win 11 terkini Memperkenalkan kaedah penalaan bunyi Win 11 terkini Jan 08, 2024 pm 06:41 PM

Selepas mengemas kini kepada win11 terkini, ramai pengguna mendapati bahawa bunyi sistem mereka telah berubah sedikit, tetapi mereka tidak tahu bagaimana untuk menyesuaikannya Jadi hari ini laman web ini membawakan anda pengenalan kepada kaedah pelarasan bunyi win11 terkini untuk komputer anda. Ia tidak sukar untuk dikendalikan dan pilihannya pelbagai, datang dan muat turun dan cuba. Cara melaraskan bunyi sistem komputer terkini Windows 11 1. Mula-mula, klik kanan ikon bunyi di sudut kanan bawah desktop dan pilih "Tetapan Main Semula". 2. Kemudian masukkan tetapan dan klik "Speaker" dalam bar main balik. 3. Kemudian klik "Properties" di bahagian bawah sebelah kanan. 4. Klik bar pilihan "Tingkatkan" dalam sifat. 5. Pada masa ini, jika √ di hadapan "Lumpuhkan semua kesan bunyi" ditandakan, batalkannya. 6. Selepas itu, anda boleh memilih kesan bunyi di bawah untuk ditetapkan dan klik

Pengenalan kepada kekunci pintasan tepi Pengenalan kepada kekunci pintasan tepi Jul 12, 2023 pm 05:57 PM

Dalam kehidupan yang pantas hari ini, untuk meningkatkan kecekapan kerja, kekunci pintasan adalah keperluan kerja yang penting. Kekunci pintasan ialah kekunci atau kombinasi kekunci yang menyediakan cara alternatif untuk melakukan tindakan yang biasanya dilakukan menggunakan tetikus. Jadi apakah kekunci pintasan tepi? Apakah fungsi kekunci pintasan tepi? Editor di bawah telah menyusun pengenalan kepada kekunci pintasan tepi Rakan-rakan yang berminat harus datang dan melihat! Ctrl+D: Tambah halaman semasa ke kegemaran atau senarai bacaan Ctrl+E: Lakukan pertanyaan carian dalam bar alamat Ctrl+F: Cari pada halaman Ctrl+H: Buka panel sejarah Ctrl+G: Buka panel senarai bacaan Ctrl +I: Buka panel senarai kegemaran (ujian nampaknya tidak berfungsi) Ctrl+J: Buka

Panduan Pemula PyCharm: Analisis Komprehensif Fungsi Penggantian Panduan Pemula PyCharm: Analisis Komprehensif Fungsi Penggantian Feb 25, 2024 am 11:15 AM

PyCharm ialah persekitaran pembangunan bersepadu Python yang berkuasa dengan fungsi dan alatan yang kaya yang boleh meningkatkan kecekapan pembangunan dengan ketara. Antaranya, fungsi penggantian merupakan salah satu fungsi yang kerap digunakan dalam proses pembangunan, yang boleh membantu pembangun mengubah suai kod dengan cepat dan meningkatkan kualiti kod. Artikel ini akan memperkenalkan fungsi gantian PyCharm secara terperinci, digabungkan dengan contoh kod khusus, untuk membantu orang baru menguasai dan menggunakan fungsi ini dengan lebih baik. Pengenalan kepada fungsi gantian Fungsi gantian PyCharm boleh membantu pembangun dengan cepat menggantikan teks yang ditentukan dalam kod

Maklumat terperinci tentang lokasi pemacu pencetak pada komputer anda Maklumat terperinci tentang lokasi pemacu pencetak pada komputer anda Jan 08, 2024 pm 03:29 PM

Ramai pengguna memasang pemacu pencetak pada komputer mereka tetapi tidak tahu cara mencarinya. Oleh itu, hari ini saya membawakan anda pengenalan terperinci mengenai lokasi pemacu pencetak dalam komputer Bagi mereka yang belum tahu, mari kita lihat di mana untuk mencari pemacu pencetak Apabila menulis semula kandungan tanpa mengubah maksud asal. anda perlu Bahasa ditulis semula ke bahasa Cina, dan ayat asal tidak perlu muncul Pertama, adalah disyorkan untuk menggunakan perisian pihak ketiga untuk mencari 2. Cari "Kotak Alat" di sudut kanan atas klik "Pengurus Peranti" di bawah. Ayat yang ditulis semula: 3. Cari dan klik "Pengurus Peranti" di bahagian bawah 4. Kemudian buka "Print Queue" dan cari peranti pencetak anda. Kali ini ialah nama dan model pencetak anda. 5. Klik kanan peranti pencetak dan anda boleh mengemas kini atau menyahpasangnya.

See all articles