我有一個帶有 2 個控制器檔案的 Spring Boot 專案,如下所示:
檔案1.java
@GetMapping(value = "/test")
public List<Object> getdata() {
String e_url = ""; //external API with above JSON data
RestTemplate rt = new RestTemplate();
Object[] test = rt.getForObject(e_url,Object[].class);
return Arrays.asList(test);
}
檔案2.java
public class controller2 extends HttpServlet {
Public void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException {}
Public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException
Public static void pr(HttpServletRequest request, HttpServletResponse response, PrintWriter out) {
//From here I want to display the JSON data to web interface which passes from controller 1
}
}
當我運行它會拋出這個錯誤
HTTP Status 500 – Internal Server Error并顯示一個錯誤就
Object[] test = rt.getForObject(e_url,Object[].class);行了。
我想通過另一個控制器在 Web 界面上顯示 JSON 資料,并通過 POST 方法連接第一個和第二個控制器
JSON 格式為:
{
"seconds": 0.00163,
"records": [
{
"id": "cc:1001",
"column": "col:10",
"idn": "tester.",
"topic": "W",
"rnk": 2,
"tid": "txn:218",
"stp": "M"
}
]
}
您能否就我如何實作這一目標提出一些建議?
uj5u.com熱心網友回復:
如果您不想使用資料庫,那么您的另一個選擇是將日期存盤在記憶體中,如下所示:
@RestController
public class Controller1 {
private Service service;
public Controller1(Service service) {
this.service = service;
}
@GetMapping(value = "/test")
public List<Object> getdata() {
return service.getData();
}
}
您的控制器將依賴服務從另一個 API 獲取資料,如下所示:
@Service
public class Service {
private List<Object> data = new ArrayList<>();
public List<Object> getdata() {
String e_url = ""; //external API with above JSON data
RestTemplate rt = new RestTemplate();
Object[] test = rt.getForObject(e_url,Object[].class);
data = Arrays.asList(test);
return data;
}
public List<Object> getRetrievedData() {
return data;
}
}
現在,Controller2您可以從以下位置獲取檢索到的資料Service:
public class controller2 extends HttpServlet {
private Service service; // Not really sure how to inject this here since for whatever
// reason you are using an `HttpServlet` instead of a regular Spring Boot Controller
Public void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException {}
Public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException {
service.getRetrievedData();
}
Public static void pr(HttpServletRequest request, HttpServletResponse response, PrintWriter out) {
//From here I want to display the JSON data to web interface which passes from controller 1
}
}
uj5u.com熱心網友回復:
您應該使用@WebServlet類級別的注釋將 URL 模式添加到第二個控制器。在此答案中查看更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/351847.html
