通过填写表单中的详细信息,对另一个服务进行REST URL调用

我最近开始使用Spring MVC框架。 我在网上阅读大量的教程时取得了很大的进步。

关于我申请的背景 –

我必须使用表单中提供的详细信息对另一个服务(已在tomcat上部署)进行REST URL调用。 所以我已经使用JSP创建了一个表单,其内容如图所示 – 我不知道如何通过从表单条目中创建url然后显示该URL的响应来进行REST URL调用下一个屏幕。

所以在上面的表格中,如果我已经将User Id as 1000012848User Id as 1000012848 ,并且checkbox is selected (means true) for Debug Flag并且在Attribute Name I have selected first row (通常我们也可以选择所有三个),并且Machine Name is localhostPort Number is 8080然后url应该看起来像这样 –

 http://localhost:8080/service/newservice/v1/get/PP.USERID=1000012848,debugflag=true/host.profile.ACCOUNT 

因此,在我们将从表单条目中创建的所有URL中,下面的行始终位于同一位置 – 然后在每个表单条目开始附加后

 service/newservice/v1/get/ 

现在制作完上面的url之后,只要我点击提交,它就会调用上面的url,无论从URL获得什么响应,它都会显示在下一个屏幕(result.jsp文件)中我不知道怎么做? 以下是我创建的文件。 任何人都可以帮助我解决我的问题吗? 我需要做什么代码才能解决这个问题?

student.jsp文件(制作表格)

      First Tutorial   
<!-- -->
User Id
Debug Flag :
Attribute Name
Environment
Machine Name
Port Number

result.jsp文件(我打算在点击该url后显示结果)

      HostDomain   

Response after submitting the result

// Not sure what I need to add here to show the result after hitting the url

控制器类 –

 @Controller public class SampleRaptorController { @RequestMapping(value = "/student", method = RequestMethod.GET) public ModelAndView student() { return new ModelAndView("student", "command", new Student()); } @RequestMapping(value = "/addStudent", method = RequestMethod.POST) public String addStudent(@ModelAttribute("SpringWeb") Student student, ModelMap model) { model.addAttribute("userId", student.getUserId()); return "result"; } @ModelAttribute("attributeNamesList") public Map populateSkillList() { //Data referencing for java skills list box Map attributeNamesList = new LinkedHashMap(); attributeNamesList.put("ACCOUNT","host.profile.ACC"); attributeNamesList.put("ADVERTISING","host.profile.ADV"); attributeNamesList.put("SEGMENTATION","host.profile.SEG"); return attributeNamesList; } } 

您可以使用RestTemplate从spring组件调用RESTful URL

所以,你的控制器方法可以如下

 @Controller public class SampleRaptorController { @Autowired RestTemplate restTemplate; @RequestMapping(value = "/addStudent", method = RequestMethod.POST) public String addStudent( @ModelAttribute("SpringWeb") Student student, Model model){ // Build URL StringBuilder url = new StringBuilder(). append("http://localhost:8080/service/newservice/v1/get"). append("?PP.USERID=" + student.getUserId). append("&debugflag=" + student.isDebugFlag);// so on // Call service String result = restTemplate.getForObject(url.toString(), String.class); model.addAttribute("result", result); return "result"; } } 

您的spring配置应该注册restTemplate,如下所示:

  

有关更多详细信息,请参阅RestTemplate文档 。

以上应该做。

一个建议..您的RESTful URL( http://localhost:8080/service/newservice/v1/get/PP.USERID=1000012848, debugflag=true/host.profile.ACCOUNT )非常糟糕。 一旦您解决了问题,我建议您谷歌搜索一个好的RESTful URL的样子。

干杯,Vinay