RESTっぽいJava

JSFやらDIやらを転職するときの糧にと思い、後輩に教えようとしてたのですが

仕事のかたわらですし、「Interfaceって何なんすか?」な所からスタートなので、

あえなく挫折です。ですので、JavaによるWebアプリ開発Servlet + JSP(JSTL含む) 程度のアプリにすることにしました。


今からStruts覚えても、仕様どうなるか分からないし、アレの必要性について疑問になってきたので…


そういう流れでサンプルアプリ作ってたら、RESTなアプローチの方が分かりやすいかなと思い、

調べてたら、ブラウザからPUT,DELETEを投げる方法もあるみたいで、どうにかできそうです。

以下は断片的なコードです。

 package web;
 
 import java.io.IOException;
 import java.util.List;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import autotest.service.MachineService;
 
 public class VottieServlet extends HttpServlet {
 
        protected void doGet(HttpServletRequest req,
                             HttpServletResponse res) throws ServletException, IOException {
                HttpSession session = req.getSession();
                Service service = new Service();
                List list = service.getMachines();
                session.setAttribute("results", list);
                ServletContext ctx = getServletContext();
                RequestDispatcher rd = ctx.getRequestDispatcher("/list.jsp");
                rd.forward(req, res);
        }
 	
 	protected void doPost(HttpServletRequest req,
 			HttpServletResponse res) throws ServletException, IOException {
 		System.out.println("---- POST ----");
 		ServletContext ctx = getServletContext();
 		RequestDispatcher rd = ctx.getRequestDispatcher("/list.jsp");
 		rd.forward(req, res);
 		
 	}
 	
 	protected void doDelete(HttpServletRequest req,
 			HttpServletResponse res) throws ServletException, IOException {
 		System.out.println("---- DELETE ----");
 		ServletContext ctx = getServletContext();
 		RequestDispatcher rd = ctx.getRequestDispatcher("/list.jsp");
 		rd.forward(req, res);
 	} 
 
 	protected void doPut(HttpServletRequest req,
 			HttpServletResponse res) throws ServletException, IOException {
 		System.out.println("---- PUT ----");
 
 		ServletContext ctx = getServletContext();
 		RequestDispatcher rd = ctx.getRequestDispatcher("/list.jsp");
 		rd.forward(req, res);
 	}
 }
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>sample</title>
<script language="javascript" type="text/javascript">
	function createXMLHttpRequest() {
	   return this.XMLHttpRequest ? 
	      new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	}
	var req = createXMLHttpRequest();
	function send_request(method) {
	  req.open(method, "/sample/vottie", true)
	  req.send(null)
	}
</script>
</head>
<body>
    <table border="1">
      <c:forEach var="loop" items="${results}">
      <tr>
        <td>
          <c:out value="${loop.name}"></c:out>        
        </td>
        <td>
          <c:out value="${loop.value}" />
        </td>
        <td>
          <input type="button" value="delete" onclick="send_request('DELETE')" /> 
        </td>
        <td>
          <input type="button" value="put" onclick="send_request('PUT')" />
        </td>
      </tr>
      </c:forEach>
      </table>
	
      <form action="/sample/vottie" method="POST">
      <input type="hidden" name="method" value="POST" />
	  <input type="text" name="name" size="10"/>
	  <input type="text" name="port" size="5"/>
	  <input type="submit" value="POST" />
	</form>
</body>
</html>
<?xml version="1.0"?>
<web-app>
	<servlet>
		<servlet-name>sample</servlet-name>
		<servlet-class>web.VottieServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>sample</servlet-name>
		<url-pattern>/sample/*</url-pattern>
	</servlet-mapping>

    <el-ignored>false</el-ignored>
    <!-- Welcome files -->

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>