1. 程式人生 > >ssh框架中,ajax無法呼叫servlet的一種原因:web.xml中servlet與struts的衝突。

ssh框架中,ajax無法呼叫servlet的一種原因:web.xml中servlet與struts的衝突。

在進行一個ssh專案開發的過程中,在使用ajax+servlet做聯想輸入時出現了一個問題,功能總是無法實現,在測試之後發現問題處在ajax完全沒有呼叫servlet!

於是便開始找錯,新建了一個web project將相應的jsp和servlet檔案copy到新建的web project後,竟然完美執行,在查看了兩個專案的區別,突然驚覺,這兩個web project最大的區別就在於舊的project的web.xml中有struts和servlet,而新的project的web.xml只有servlet。問題已經浮出水面,ajax無法呼叫servlet的問題就在於web.xml中servlet與struts的衝突。

深入研究後發現,在請求服務時,strusts2會截獲的所有的請求,因為因為action和servlet都沒有任何的字尾名,所以struts2把servlet當成了一個action,將action和servlet的請求都截獲,導致servlet不能正常的響應。

找到根本問題後,我們的解決方法也十分的清晰,只要我們能讓servlet和struts互相不打擾對方就可以。

總共有四種方法可以,因為這個問題解決的方法十分常見,本人就不一一列舉了,本人只列舉自己使用的方法。

我是在在所有的servlet中都加上.servlet而其他的不需要改變,快捷方便。

這是改正前的:

<servlet-mapping>
    <servlet-name>ScoreDetails</servlet-name>
    <url-pattern>/ScoreDetails</url-pattern>
  </servlet-mapping>

這是改正後的:

<servlet-mapping>
    <servlet-name>ScoreDetails</servlet-name>
    <url-pattern>/ScoreDetails.servlet</url-pattern>
  </servlet-mapping>

同ajax中的url也需要更改。

這是改前的:

 $.ajax({
                    url:"ScoreDetails",
                    type:"post",
                    data:{"uname":uname},

這是改正後的:

 $.ajax({
                    url:"ScoreDetails.servlet",
                    type:"post",
                    data:{"uname":uname},

隨後重新進行測試,發現問題已經解決,ajax已經可以正常呼叫servlet了。

本人本科軟體工程學生黨一枚,如有錯誤歡迎指正,歡迎交流。


相關推薦

ssh框架ajax無法呼叫servlet原因web.xmlservletstruts衝突

在進行一個ssh專案開發的過程中,在使用ajax+servlet做聯想輸入時出現了一個問題,功能總是無法實現,在測試之後發現問題處在ajax完全沒有呼叫servlet!於是便開始找錯,新建了一個web

資料倉庫緩慢變化維的設計方案

資料倉庫中,緩慢漸變維度是一種經常使用到的方案。 “漸變”,即為逐漸變化的維度,因為日常應用中,維度屬性是隨時可能發生變化的,而BI統計時,又可能是需要歷史某個時間點的維度屬性值。所以這種情況下,就需要我們記錄下這個變化資訊,於是漸變維度就出現了。 “緩慢”兩個字,也是需要

tomcat啟動成功訪問主頁失敗的原因

                如果在 網上搜一圈“tomcat啟動成功,當輸入http://localhost:8080報404錯誤”。有說檢視日誌定位問題的,有說檢查埠有沒有衝突,建議去serve

SSM框架ajax和相應controller的寫法

頁面上: $.ajax({ //幾個引數需要注意一下 type: "POST",//方法型別

關於form表單使用ajax提交表單ajax無法success的問題

問題背景:我的畢業設計是重構自己以前寫過的一個小網站,之前寫的時候沒有用任何框架,前後臺互動資料靠el表示式、form表單。在完成畢業設計時使用SpringMVC+Spring+MyBatis+JQuery,統一使用ajax來互動資料。 問題再現: html關鍵程式碼<

解決方式-在Mac系統Eclipse無法導入含有中文路徑的project

導入 pan support cati 一行 oct tracking -a ctype 1、改動eclipse.app/Contents/Info.plist。查找 <key>CFBundleExecutable<key>在其上方加入下面

servlet無法自動在web.xml配置

bubuko mage wid 選擇 project http info 無法 無法自動 在新建dynamic web project 時,dynamic web module version選擇2.5。 servlet無法自動在web.xml中配置

在同一個類一個方法呼叫另外一個有註解(比如@Async@Transational)的方法註解失效的原因和解決方法

在同一個類中,一個方法呼叫另外一個有註解(比如@Async,@Transational)的方法,註解是不會生效的。 比如,下面程式碼例子中,有兩方法,一個有@Transational註解,一個沒有。如果呼叫了有註解的addPerson()方法,會啟動一個Transaction;如果呼叫updatePerso

C#(Winform) 當前執行緒不在單執行緒單元因此無法例項化 ActiveX 控制元件

解決方案: 1、在主執行緒中例項化此ActiveX控制元件 2、將建立此Active控制元件的執行緒設定為單執行緒。       Thread.ApartmentState 獲取或設定此執行緒的單元狀態。             newThread= new Thre

web.xml的配置servletfilterlistener的作用和原理

首先介紹servlet,filter和listen的原理: servlet可以說是動態頁面的基石,現在很多開發都是基於spring等各種框架,所以對servlet的瞭解可能少點,下面先用簡單的例子,說明下servlet的作用 MyFirstServlet.java class MyF

web.xml配置servlet的URL對映後瀏覽器訪問出錯

在一些servlet教程中,給出的servlet的URL對映配置方式是,在web.xml中新增servlet元素和servlet-mapping元素: <servlet> <servlet-name>ServletDemo01&l

在前後端分離的專案ajax跨域請求怎樣附帶cookie

在專案的實際開發中,我們總會遇到前後端分離的專案,在這樣的專案中,跨域是第一個要解決的問題,除此之外,儲存使用者資訊也是很重要的,然而,在後臺儲存使用者資訊通常使用的session和cookie結合的方法,而在前端的實際情況中,跨域產生的ajax是無法攜帶cookie資訊的,

在wmware esxi 虛擬機器 centos7 無法訪問外網 問題的解決

在虛擬機器的centos7 系統中,使用yum 下載安裝svn,一直失敗。   錯誤提示資訊為  Cannot find a valid baseurl for repo: updates/7/x86_64 按照這個錯誤提示資訊,在網路上搜索相關解決方案,全部無效! 修改

eclipse專案無法在tomcat釋出(project facet java version 1.7 is not supported)

在tomcat中釋出專案時無法新增專案,錯誤資訊:project facet java version 1.7 is not supported,如下圖 這是由於你的tomcat的jdk版本低於你專案的jdk版本導致的。 解決方案有2個:修改你的tomca

SSH框架整合的時候 在web.xml需配置的spring資訊struts2的配置資訊

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com

ssm框架需要引入的jar包、Maven的pom.xml

工欲善其事,必先利其器。開發之初或者開發過程中按需求引入必要jar包,在pom.xml檔案中寫入的<dependency>標籤在這裡:https://mvnrepository.com/artifact/org.springframework/spring-test/4.3.7.RELE

關於使用ssh框架pojo、dao、service三層的關係 .

  文章來源於網路,僅用於學習: DAO是底層與資料庫直接互動的部分,serivce是又對DAO進行了一次封裝。而service是暴露給action的部分。aciton裡面呼叫service,service呼叫DAO。 1,dao和service對應        一般

安卓 自定義 日期和時間選擇器在一個佈局可以直接呼叫

廢話不多說先看效果,效果不符合,就不要用看了。 安卓提供自己的日期選擇和時間選擇,但是樣式並不是自己想要的,如果非要把他們放在一起,會發現,樣式不好看,而且時間和日期選擇控制元件的大小不好控制,甚至根本沒法放在一行上,所以實現自定義日期時間選擇器有兩種方式 1.自己寫自定

MyEclipse上快速SSH框架搭建由資料庫表生成類

struts2、spring4、hibernate5三大框架整合,資料庫使用的是MySql資料庫 資料庫部分,我使用的是Navicat for MySQL先把資料庫,以及表都建好了,如圖 然後可以開始搭建SSH框架 首先新建一個web工程專案,這邊我已經先建好了 然後右擊專案名稱

vue專案圖片無法顯示時顯示預設圖片但預設圖片路徑出錯

設定img的onerror,不能正常顯示圖片,路徑不對解決方法 <img :src="img.url" alt="圖片" width="100%" :onerror="defaultImg"/> export default { name: "pass-co