我想获取一个参数值,该值在URL内传递给servlet中的变量。
我写的服务如下。
@Path("/hello")
public class HelloWorldService {
@GET
@Path("/{name}")
public Response getUserDetails(@PathParam("name") String email){
String output = "User info .. "+name ;
// String queryParamStr = request.getQueryString();
return Response.status(200).entity(output).build();
}
}
我使用以下网址来测试服务。 ... //本地主机:8080 /泽西静止/休息/你好/汉斯
它将输出显示为用户信息..hansi
现在我想将此参数值传递给servlet。我写了一个servlet,如下所示。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
String parameter=request.getParameter("name");
System.out.println("##########parameter############"+parameter);
} finally {
out.close();
}
}
下面是我的web.xml
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Restful Web Application</display-name>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.mkyong.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
我希望将值“hansi”赋予参数变量。但我无法得到。我是java web的新手。
答案 0 :(得分:0)
您可以使用request.getRequestUri()
如果使用localhost:8080/Jersey-Rest/rest/hello/hansi
调用servlet,getRequestUri将返回/Jersey-Rest/rest/hello/hansi
。然后你可以从这个字符串中检索'hansi'。
示例代码:
String uri = request.getRequestUri();
String[] params = uri.Split("/");
String name = params[params.length()-1];
PrintWriter out = response.getWriter();
out.println( "Name : " + name);