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