ちょっとしたデータ編集作業の用が生じ、簡易的なWebアプリケーションを作成してGUIで進めることにした。
個人的に使うので、保守性も何も気にする必要がない。とにかくさくっと作れればよい。
端末にEclipseが入っていたので、EclipseでJavaで動的Webアプリを作るぞ。ポチポチポチっとプロジェクトやServletをテンプレートから作成して、あとはにょろにょろっとコーディングじゃい。
しかしjspからajaxでJavaサーブレットにアクセスしようにも応答しない。これはおおいに困った。
<web-app>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
$ajax({
url:'/testapp/test',
type:'POST',
data:{
'param1':'aaa',
'param2':'bbb'
}
})
.done((data)=> {console.log("done!");})
.fail((data)=> {console.log("fail!");})
.always((data)=> {console.log("always!");})
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
public TestServlet() {...}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {...}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {...}
}
fail!
always!
どうやってもTestServletに届かず、何が原因かさっぱりわからない。
で、よくよく見たところ、TestServlet.javaを自動生成した際に入っていた @WebServlet("/TestServlet")
が気になった。
やれやれ。僕は検索した。
[@WebServletでURLパターンを指定]
(https://code-examples-ja.hateblo.jp/entry/2015/10/22/%40WebServlet%E3%81%A7URL%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%82%92%E6%8C%87%E5%AE%9A)
げろげろ。web.xmlってわざわざ書く必要ないのね……。
web.xmlの記述を削除して、ajaxのurlを '/testapp/TestServlet'
にしたら難なく動いた。
普段フレームワークやテンプレートに頼りっきりだと化石エンジニアになってしまいますね。日頃の研鑽はいざという瞬間の開発速度に如実に現れますな。