Я создал конечную точку AJAX, которая будет предоставлять внешний запрос AJAX с массивом статей JSON.Мне нужна помощь в отображении данных в файле HTML.Класс Article предназначен для объекта Article, который может представлять информацию из данных статьи.В классе ArticleListGenerator у меня есть один статический метод getArticleList (), который возвращает список статей.Метод getArticleList () обращается к файлу JSON, который используется для генерации JSON.В моем классе JSONResponse у меня есть один статический метод, который принимает объект ответа и объект, который реализует интерфейс JSONAware в качестве аргументов.И класс Endpoint - это мой метод doGet.Следующее, что я хочу сделать, это отобразить данные на странице HTML.
В файле Html у меня есть javascript, и я использую XMLHttpRequest для получения данных JSON из конечной точки, класс сервлета «Конечная точка»Я не уверен, что это правильный способ сделать это.
В моем HTML-файле я пробовал javascript
<script>
var url="/endpoint";
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (!xhttp) {
console.log('Unable to create XMLHTTP instance');
return false;
}else if(xhttp.readyState == 4 &&xhttp.status===200) {
data = JSON.parse(xhttp.responseText);
console.log(" test:"+data);
}else{
console.log("page not found")
}
};
xhttp.open("GET", "url", true);
xhttp.send();
</script>
В моем файле web.xml
<servlet>
<servlet-name>Endpoint</servlet-name>
<servlet-class>Test.web.Endpoint</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Endpoint</servlet-name>
<url-pattern>/endpoint</url-pattern>
</servlet-mapping>
public class Article implements Serializable {
private int id;
private String title;
private String content;
private int authorId;
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public int getAuthorId() {
return this.authorId;
}
public void setAuthorId(int authorId) {
this.authorId = authorId;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return this.content;
}
public void setContent(String content) {
this.content = content;
}
public static JSONObject toJson(Article a) {
JSONObject jObj = new JSONObject();
if (a != null) {
jObj.put("id", a.getId());
jObj.put("title", JSONObject.escape(a.getTitle()));
jObj.put("content", JSONObject.escape(a.getContent()));
jObj.put("author_id", a.getAuthorId());
}
return jObj;
}
}
public class ArticleListGenerator {
public static List<Article> getArticleList(){
List<Article> articles = new ArrayList<>();
try (InputStreamReader inputStreamReader = new InputStreamReader(Thread.currentThread().getContextClassLoader().getResourceAsStream("JSONArray.json"))) {
Object obj = new JSONParser().parse(inputStreamReader);
JSONArray jsonArray = (JSONArray) obj;
for (int i = 0; i < jsonArray.size(); i++){
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
Article article = new Article();
String title = (String) jsonObject.get("title");
Long id = (Long) jsonObject.get("id");
Long authorId = (Long) jsonObject.get("author_id");
String content = (String) jsonObject.get("content");
article.setTitle(title);
article.setId(id.intValue());
article.setAuthorId(authorId.intValue());
article.setContent(content);
articles.add(article);
}
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
return articles;
}
}
public class JSONResponse {
public static void send(HttpServletResponse response, JSONAware j) {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
try {
response.getWriter().print(j.toJSONString());
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class Endpoint extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<Article> article=ArticleListGenerator.getArticleList();
JSONArray jArr = new JSONArray();
for(int i=0; i<article.size();i++){
jArr.add(Article.toJson(article.get(i)));
}
JSONResponse.send(resp, jArr);
}
}