在春天叫休息api

时间:2013-04-15 14:04:48

标签: json spring rest

我在Spring控制器中有休息方法,如下所示:

@RequestMapping(value="/register/{userName}" ,method=RequestMethod.GET)
@ResponseBody
public String getUserName(HttpServletRequest request,@PathVariable String userName ){
    System.out.println("User Name : "+userName);
    return "available";

}

在jquery中我写了一个像ajax一样的调用:

$(document).ready(function(){

        $('#userName').blur(function(){
            var methodURL = "http://localhost:8085/ums/register/"+$('#userName').val();

            $.ajax({
                type : "get",
                URL : methodURL,
                data : $('#userName').val(),
                success : function(data){
                    alert(data);
                    $('#available').show();
                    }
                })
            });
});

在web.xml中我有:

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

在spring-servlet.xml中,我有如下的视图解析器:

<context:component-scan base-package="com.users.controller" />
    <context:annotation-config />
        <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1"/>
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="text/xml" />
<entry key="htm" value="text/html" />
</map>
</property>
<property name="ignoreAcceptHeader" value="true" />
<!-- <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />-->
<property name="defaultContentType" value="text/html" />
</bean>
<bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="order" value="2" />
        <property name="prefix">
            <value>/WEB-INF/jsp/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

当我在服务器上运行它时,它不会进入控制器。 请告诉我这段代码的问题。

请对此有任何帮助。

此致 思鲁提

3 个答案:

答案 0 :(得分:1)

由于您的方法定义中包含@RequestMapping(value =“register / {userName}”,因此您的jquery调用必须遵循相同的语法。

var methodURL = "http://localhost:8085/users/register/"+$('#userName').val()+".html";

但是你的RequestMapping值也有问题,它应该以/

开头
@RequestMapping(value="/register/{userName}"

另外我怀疑你最后需要“.html”

答案 1 :(得分:0)

将此行添加到spring-servlet.xml中。它将启用Web MVC特定注释,如@Controller@RequestMapping

<mvc:annotation-driven />

带注释的控制器的示例

假设带有上下文的网址为http://localhost:8080/webapp,您需要像网址/users/register/johnDoe这样的api调用。 (johnDoe是用户名)

您的控制器类看起来如下所示。

@Controller
@RequestMapping(value="/users")
class UserController {

@ResponseBody
@RequestMapping(value="/register/{username}", method=RequestMethod.GET)
    public String registerUser(@PathVariable String username) {
        return username;
    }
}

答案 2 :(得分:0)

请找到我在Spring Framework中调用REST Web服务的解决方案。

    /**
     * REST API Implementation Using REST Controller
     * */
    @RestController
    public class RestReqCntrl {

        @Autowired
        private UserService userService;    

        @Autowired
        private PayrollService payrollService;  


        //-------------------Create a User--------------------------------------------------------

        @RequestMapping(value = "/registerUser", method = RequestMethod.POST)
        public ResponseEntity<User> registerUser(@RequestBody User user,    UriComponentsBuilder ucBuilder) throws Exception {
            System.out.println("Creating User " + user.getFirstName());

            boolean flag = userService.registerUser(user);

             if (flag)
             {
                 user.setStatusCode(1);
                 user.setStatusDesc("PASS");
             }else{
                 user.setStatusCode(0);
                 user.setStatusDesc("FAIL");

             }

            HttpHeaders headers = new HttpHeaders();
            headers.setLocation(ucBuilder.path("/registerUser").buildAndExpand(user.getId()).toUri());
            return new ResponseEntity<User>(user,headers, HttpStatus.CREATED);
        }   

        //-------------------Authenticating the User--------------------------------------------------------

        @RequestMapping(value = "/authuser", method = RequestMethod.POST)
        public ResponseEntity<User> authuser(@RequestBody User user,UriComponentsBuilder ucBuilder) throws Exception {
            System.out.println("Creating User " + user.getFirstName());

            boolean flag = userService.authUser(user);

             if (flag)
             {
                 user.setStatusCode(1);
                 user.setStatusDesc("PASS");
             }else{
                 user.setStatusCode(0);
                 user.setStatusDesc("FAIL");

             }

            HttpHeaders headers = new HttpHeaders();
            headers.setLocation(ucBuilder.path("/authuser").buildAndExpand(user.getFirstName()).toUri());
            return new ResponseEntity<User>(user,headers, HttpStatus.ACCEPTED);
        }   

        //-------------------Create a Company--------------------------------------------------------
        @RequestMapping(value = "/registerCompany", method = RequestMethod.POST)
        public ResponseEntity<String> registerCompany(@RequestBody ComypanyDTO comypanyDTO, UriComponentsBuilder ucBuilder) throws Exception {
            System.out.println("Creating comypanyDTO " + comypanyDTO.getCmpName());
            String result ="";
            boolean flag = payrollService.registerCompany(comypanyDTO);

             if (flag)
             {
                 result="Pass";
             }else{
                 result="Fail";

             }

            HttpHeaders headers = new HttpHeaders();
            headers.setLocation(ucBuilder.path("/registerCompany").buildAndExpand(result).toUri());
            return new ResponseEntity<String>(result,headers, HttpStatus.ACCEPTED);
        }   


        //-------------------Create a Employee--------------------------------------------------------
        @RequestMapping(value = "/registerEmployee", method = RequestMethod.POST)
        public ResponseEntity<String> registerEmployee(@RequestBody EmployeeDTO employeeDTO, UriComponentsBuilder ucBuilder) throws Exception {
            System.out.println("Creating registerCompany " + employeeDTO.getEmpCode());
            String result ="";
            boolean flag = payrollService.registerEmpbyComp(employeeDTO);

             if (flag)
             {
                 result="Pass";
             }else{
                 result="Fail";

             }

            HttpHeaders headers = new HttpHeaders();
            headers.setLocation(ucBuilder.path("/registerCompany").buildAndExpand(result).toUri());
            return new ResponseEntity<String>(result,headers, HttpStatus.ACCEPTED);
        }   

        //-------------------Get Company Deatils--------------------------------------------------------
        @RequestMapping(value = "/getCompanies", method = RequestMethod.GET)
        public ResponseEntity<List<ComypanyDTO> > getCompanies(UriComponentsBuilder ucBuilder) throws Exception {
            System.out.println("getCompanies getCompanies ");
            List<ComypanyDTO> comypanyDTOs =null;
            comypanyDTOs = payrollService.getCompanies();
            //Setting the Respective Employees
            for(ComypanyDTO dto :comypanyDTOs){

                dto.setEmployeeDTOs(payrollService.getEmployes(dto.getCompanyId()));
            }

            HttpHeaders headers = new HttpHeaders();
            headers.setLocation(ucBuilder.path("/registerCompany").buildAndExpand("LISt").toUri());
            return new ResponseEntity<List<ComypanyDTO>>(comypanyDTOs,headers, HttpStatus.ACCEPTED);
        }   
    }

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name="USER_TABLE")
public class User implements Serializable {

    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    private String firstName;
    private String lastName;
    private String email;
    private String userId;
    private String password;
    private String userType;
    private String address;
    @Transient
    private int statusCode;
    @Transient
    private String statusDesc;


    public User(){

    }

    public User(String firstName, String lastName, String email, String userId, String password, String userType,
            String address) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
        this.userId = userId;
        this.password = password;
        this.userType = userType;
        this.address = address;
    }

    public int getId() {
        return id;
    }

     public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


    /**
     * @return the userType
     */
    public String getUserType() {
        return userType;
    }


    /**
     * @param userType the userType to set
     */
    public void setUserType(String userType) {
        this.userType = userType;
    }


    /**
     * @return the address
     */
    public String getAddress() {
        return address;
    }


    /**
     * @param address the address to set
     */
    public void setAddress(String address) {
        this.address = address;
    }

    /**
     * @return the statusCode
     */
    public int getStatusCode() {
        return statusCode;
    }

    /**
     * @param statusCode the statusCode to set
     */
    public void setStatusCode(int statusCode) {
        this.statusCode = statusCode;
    }

    /**
     * @return the statusDesc
     */
    public String getStatusDesc() {
        return statusDesc;
    }

    /**
     * @param statusDesc the statusDesc to set
     */
    public void setStatusDesc(String statusDesc) {
        this.statusDesc = statusDesc;
    }        
}