2010-11-20 29 views
21

Gönderilen formdan jax-rs'ye aktarılan bazı parametreleri HttpServletRequest ile almaya çalışıyorum. Ancak, istek neslim parametrelerim için her zaman boş değerler döndürüyor. Bu konuda doğru şekilde gitmiyorum mu? Aşağıdaki kodu, gönderilmekte olan bir örnek isteğiyle birlikte gönderdim.jax-rs form parametrelerini al

@Path("/") 
@Stateless 
public class HomeController { 

    @Context 
    private HttpServletRequest request; 
    @Context 
    private HttpServletResponse response; 
    @EJB 
    private LoginServiceLocal loginService; 

    @POST 
    @Path("/authenticate") 
    @Consumes("application/x-www-form-urlencoded") 
    public void authenticate() throws Exception { 
     String email = request.getParameter("email"); 
     String password = request.getParameter("password"); 
     if (loginService.authenticate(email, password)) { 
      response.sendRedirect("/app"); 
     } else { 
      request.setAttribute("authenticationError", "Invalid email/password."); 

     } 
    } 
} 

Örnek istek: nasıl sorgu için yapabileceğimiz bir kez gibi tüm formu params almak için

POST http://localhost:8081/cheetah-web/authenticate HTTP/1.1 
Host: localhost:8081 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Referer: http://localhost:8081/cheetah-web/login 
Cookie: JSESSIONID=a4e7aec0624206ad33754e35cce4 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 39 

email=unit%40test.com&password=testpass 

cevap

37
@POST 
@Path("/authenticate") 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public void authenticate(@FormParam("email") String email, @FormParam("password") String password) throws Exception { 

    if (loginService.authenticate(email, password)) { 
     response.sendRedirect("/app"); 
    } else { 
     request.setAttribute("authenticationError", "Invalid email/password."); 

    } 
} 
+5

UriInfo.getQueryParameters kullanarak params() –

+18

İşte

benim hizmetidir Bir MultivaluedMap parametresi olarak kullanırsınız. Örneğin, ortak geçersiz kimlik doğrulaması (MultivaluedMap form) {...} –