私の意図は、Spring 3 MVC Web クライアントと Spring MVC REST プロバイダーも作成することです。
私の REST プロバイダーのコードは次のとおりです。
@RequestMapping("employee")
public class EmployeeController {
@Autowired
EmployeeDAO empDao;
@RequestMapping(value = "authenticateUser", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public String authenticateUser(HttpServletRequest request, @RequestParam Employee employee) {
String username = employee.getEmpCode();
String password = employee.getPassword();
String notExisting = "notExisting";
String successLogin = "successLogin";
String wrongPassword = "wrongPassword";
Employee retrievedEmployee = empDao.getById(username);
if(retrievedEmployee == null) {
return notExisting;
} else {
if(retrievedEmployee.getPassword().equals(password)) {
return successLogin;
} else {
return wrongPassword;
}
}
}
}
ここに私のWebクライアントのコードがあります:
@Controller
public class UserAuthenticationController {
private final static String SERVICEURL = "http://localhost:8080/cimweb";
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/userAuthentication", method = RequestMethod.POST)
public @ResponseBody String userAuthentication(Locale locale, Model model, HttpServletRequest request) {
Employee employee = new Employee();
String username = request.getParameter("username");
String password = request.getParameter("password");
employee.setEmpCode(username);
employee.setPassword(password);
// Prepare acceptable media type
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
HttpEntity<Employee> entity = new HttpEntity<Employee>(employee, headers);
RestTemplate restTemplate = new RestTemplate();
String url = SERVICEURL + "/employee/authenticateUser";
try {
ResponseEntity<Employee> result = restTemplate.exchange(url, HttpMethod.POST, entity, Employee.class);
} catch(Exception e) {
e.printStackTrace();
}
return "home";
}
}
オブジェクト Employee を REST プロバイダーに渡して、それを処理し、REST プロバイダーからクライアントに文字列を返すことができるようにしたいだけです。
これをデバッグするたびに、プロバイダーに到達するとnullになります。
私は多くのことを見逃していることを知っており、いくつか読んだことがありますが、ほとんどの場合、オブジェクトではなくプロバイダーからの単純な要求です。
また、servlet-context.xml 内に配置する必要がある Bean はありますか?