获取在URL内传递给servlet中的变量的参数值

时间:2014-01-23 05:20:20

标签: java-ee servlets

我想获取一个参数值,该值在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的新手。

1 个答案:

答案 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);