enter image description here這是Client.jsp,它將這兩個參數作爲輸入發送到預期的路徑。我正在嘗試創建一個簡單的寧靜Web服務示例,從而創建了兩個項目
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Form</title>
</head>
<body>
<form action="http://localhost:8080/WebAPI/backend/user/service/getFormParams" method="post">
name:<input type="text" name="username"/>
mail:<input type="text" name="email"/>
<input type="submit" value="get"/>
</form>
</body>
</html>
web.xml中有,
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>WebAPI</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Jersey</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Jersey</servlet-name>
<url-pattern>/backend/*</url-pattern>
</servlet-mapping>
</web-app>
控制器有,
package com.api.controller;
import java.io.IOException;
import java.util.Iterator;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import com.api.bo.ApiBO;
import com.api.vo.ApiVO;
@WebServlet("/ApiController")
@Path("user/service")
public class ApiController extends HttpServlet {
private static final long serialVersionUID = 1L;
@POST
@Path("/getFormParams")
@Produces(MediaType.APPLICATION_JSON)
public void doPost(HttpServletRequest request, HttpServletResponse response,MultivaluedMap<String, String>formParams,JSONObject obj) throws ServletException, IOException, JSONException {
System.out.println("into do post method");
ApiVO apivo=new ApiVO();
String username = null;
String email = null;
Iterator<String> it = formParams.keySet().iterator();
while(it.hasNext()){
username=it.next();
email=it.next();
}
apivo.setUserName(username);
apivo.setEmail(email);
System.out.println(apivo.getUserName());
ApiBO apibo=new ApiBO();
JSONObject TESTAPI=apibo.printDetails(apivo);
System.out.println(TESTAPI);
}
}
BO了,
package com.api.bo;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import com.api.vo.ApiVO;
public class ApiBO {
@Produces(MediaType.APPLICATION_JSON)
public JSONObject printDetails(ApiVO apivo) throws JSONException {
JSONObject obj=new JSONObject();
obj.put("UserName", apivo.getUserName());
obj.put("Email", apivo.getEmail());
return obj;
}
}
但是,當我嘗試運行的JSP服務器並輸入它顯示的字段,
錯誤:HTTP狀態:500 消息Servlet.init()用於servlet的球衣扔例外
請有人幫我這個錯誤。
你是什麼意思的兩個項目?而你所要做的並不是學習如何編程RESTful的方法。爲什麼你需要一個servlet? – ujulu
我想將eclipse中的一個項目的數據傳遞給另一個項目,以便我可以接受值並對它們進行進一步的操作。 – vamshi
您還沒有回答我的問題:您爲什麼需要servlet?如果我刪除了servlet註釋並定義了一個REST資源,那麼它對您來說可以嗎? – ujulu