在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java/ 前后端分離,想用Java寫(xiě)一個(gè)簡(jiǎn)單的接口給前端調(diào)用如何才能實(shí)現(xiàn)?求個(gè)簡(jiǎn)單的例子,

前后端分離,想用Java寫(xiě)一個(gè)簡(jiǎn)單的接口給前端調(diào)用如何才能實(shí)現(xiàn)?求個(gè)簡(jiǎn)單的例子,

我想暴露一個(gè)json字符串出來(lái)給前端頁(yè)面

package com.mvc.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;
import com.mvc.bean.NewTotal;
import com.mvc.bean.News;

public class JsonServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 創(chuàng)建多個(gè)新聞?lì)悾M從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),可將此處改為用JDBC從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)
        News new1 = new News(110, "日本地震", "日本福田發(fā)生了7級(jí)地震", "2016-5-16 10:22:20",
                "http://world.huanqiu.com/exclusive/2016-05/8974294.html");
        News new2 = new News(111, "Apple庫(kù)克第八次訪華", "近日庫(kù)克第八次訪華,與滴滴高層會(huì)談", "2016-5-16 10:22:20",
                "http://mobile.163.com/16/0523/09/BNO7SG2B001168BQ.html");
        News new3 = new News(113, "Google I/O大會(huì)開(kāi)幕", "Google開(kāi)發(fā)者大會(huì)即將舉辦,是否推出Android7.0?", "2016-5-16 10:22:20",
                "http://www.ithome.com/html/android/227647.htm");
        News new4 = new News(114, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20",
                "http://news.mydrivers.com/1/484/484072.htm");
        News new5 = new News(115, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new6 = new News(116, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new7 = new News(117, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new8 = new News(118, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new9 = new News(119, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new10 = new News(120, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new11 = new News(121, "獲取新數(shù)據(jù)?。。。。。?, "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new12 = new News(122, "獲取新數(shù)據(jù)!?。。。?!", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new13 = new News(123, "獲取新數(shù)據(jù)?。。。。?!", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new14 = new News(124, "獲取新數(shù)據(jù)?。。。。?!", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new15 = new News(125, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new16 = new News(126, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new17 = new News(127, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new18 = new News(128, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new19 = new News(129, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");
        News new20 = new News(130, "格力營(yíng)收下滑400億", "格里營(yíng)收下滑400億,董明珠說(shuō)我活得好的很", "2016-5-16 10:22:20", "www.baidu.com");

        String page = req.getParameter("page");
        // 將數(shù)據(jù)添加到數(shù)組
        List<News> newslist = new ArrayList<News>();
        if (page == null || page.equals("0")) {
            newslist.add(new1);
            newslist.add(new2);
            newslist.add(new3);
            newslist.add(new4);
            newslist.add(new5);
            newslist.add(new6);
            newslist.add(new7);
            newslist.add(new8);
            newslist.add(new9);
            newslist.add(new10);
        }
        else {
            newslist.add(new11);
            newslist.add(new12);
            newslist.add(new13);
            newslist.add(new14);
            newslist.add(new15);
            newslist.add(new16);
            newslist.add(new17);
            newslist.add(new18);
            newslist.add(new19);
            newslist.add(new20);
        }

        // 將數(shù)據(jù)封裝到新聞總計(jì)類(lèi)
        NewTotal nt = new NewTotal(newslist.size(), newslist);

        // 調(diào)用GSON jar工具包封裝好的toJson方法,可直接生成JSON字符串
        Gson gson = new Gson();
        String json = gson.toJson(nt);

        // 輸出到界面
        System.out.println(json);
        resp.setContentType("text/plain");
        resp.setCharacterEncoding("gb2312");
        PrintWriter out = new PrintWriter(resp.getOutputStream());
        out.print(json);
        out.flush();
        // 更多Json轉(zhuǎn)換使用請(qǐng)看JsonTest類(lèi)
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>activemq.apache</groupId>
    <artifactId>graduation03</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <!-- webSocket -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>


        <!-- MySql 5.5 Connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
        </dependency>

        <!-- config -->
        <dependency>
            <groupId>com.typesafe</groupId>
            <artifactId>config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.racc</groupId>
            <artifactId>typesafeconfig-guice</artifactId>
        </dependency>

        <dependency>
            <groupId>org.fusesource.stompjms</groupId>
            <artifactId>stompjms-client</artifactId>
            <version>1.18</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.31</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/jstl/jstl -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

    </dependencies>

</project>
回答
編輯回答
朕略萌

// 輸出到界面

    System.out.println(json);
    resp.setContentType("text/plain");
    resp.setCharacterEncoding("gb2312");
    PrintWriter out = new PrintWriter(resp.getOutputStream());
    out.print(json);
    out.flush();
    
    
   改成response.getWriter.wirter(yourVariable); // 這樣前端訪問(wèn)你的servelt不就可以獲取到你的yourVaribale了嗎,接下來(lái)的就是前端多json 對(duì)象的解析了
2018年5月13日 19:59
編輯回答
扯機(jī)薄

Servlet寫(xiě)個(gè)地址就可以了呀

2018年5月8日 20:34
編輯回答
念舊

springboot或者 resteasy+netty都可以很快速的搭建起rest服務(wù)

2018年7月6日 13:28
編輯回答
半心人

你也沒(méi)說(shuō)要簡(jiǎn)單到什么地步啊...

快速開(kāi)發(fā)那就上 Spring Boot,網(wǎng)上大把例子。

2018年2月26日 00:34
編輯回答
櫻花霓

你是擔(dān)心跨域調(diào)用嗎,前端用node代理就行了。

2018年7月24日 18:24
編輯回答
呆萌傻

推薦我們開(kāi)發(fā)的Dgate,支持mock功能,目前只支持返回json格式,使用groovy DSL語(yǔ)法產(chǎn)生配置,只需簡(jiǎn)單幾下就可以生成一個(gè)mock的json給客戶端使用,如果你懂一些groovy會(huì)用的更順手。

2017年12月13日 02:53
編輯回答
忘了我

撇開(kāi)各種框架不談,單單使用JSP+Servlet可以這么做:

1.新建一個(gè)JSP頁(yè)面,專(zhuān)門(mén)用于承載你返回的JSON數(shù)據(jù),類(lèi)似下面這樣:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
${json}

2.相關(guān)的Servlet執(zhí)行完畢之后,可以在response中設(shè)置一個(gè)名為json的屬性,屬性值就是你要返回的json格式數(shù)據(jù),完了將請(qǐng)求轉(zhuǎn)發(fā)到第一步的JSP頁(yè)面;

2017年3月14日 04:22
編輯回答
柒槿年

樓上有人提到了 SpringBoot,我這里就拋磚引玉,寫(xiě)個(gè) demo 給題主。

  • 添加 Maven 依賴(lài)
<!-- 基于 SpringBoot 1.5.9 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/>
</parent>
<dependencies>
<!-- 添加 Web 依賴(lài) -->
 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <!-- lombok 支持 -->
 <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
 </dependency>
 </dependencies>
 <!-- 添加構(gòu)建工具 -->
 <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
</build>
  • 定義目錄結(jié)構(gòu)

假設(shè)需要定義的項(xiàng)目的目錄結(jié)構(gòu)如下:

src
  `-- main
    `-- java
        `-- com.example
            |-- dto
            |   `-- News.java
            |-- controller
            |   `-- NewsEndpoint.java
            `-- application
                `-- Application.java
    
  • News.java

需要用 JSON 傳給前端的 News 對(duì)象定義如下:

@Getter
@Setter
@ToString
public class News implements Serializable {

    /**
     * 新聞主鍵
     */
    private int nid;

    /**
     * 新聞標(biāo)題
     */
    private String newsTitle;

    /**
     * 新聞內(nèi)容
     */
    private String newsContent;

    /**
     * 新聞日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    private Date newsDate;

    public News(int nid, String newsTitle, String newsContent, Date newsDate) {
        this.nid = nid;
        this.newsTitle = newsTitle;
        this.newsContent = newsContent;
        this.newsDate = newsDate;
    }

}
  • NewsEndpoint.java
@RestController
public class NewsEndpoint {

    @GetMapping("/news")
    public List<News> getNewsList() {

        List<News> newsList = new ArrayList<>(3);

        News news1 = new News(1, "title1", "content1", new Date());
        News news2 = new News(2, "title2", "content2", new Date());
        News news3 = new News(3, "title3", "content3", new Date());

        newsList.add(news1);
        newsList.add(news2);
        newsList.add(news3);

        return newsList;

    }
}
  • Application.java
@SpringBootApplication(scanBasePackages = "com.example")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

到這里,一個(gè)簡(jiǎn)單的返回 JSON 格式的 Endpoint 已經(jīng)寫(xiě)好了。默認(rèn)情況下,啟動(dòng)該項(xiàng)目(運(yùn)行 Application.class),前端通過(guò)調(diào)用 http://<你的主機(jī)ip地址>:8080/news 可以獲得如下返回結(jié)果:

調(diào)用 News Endpoint

2017年5月29日 16:43
編輯回答
練命

這個(gè)不是百度Google之類(lèi)的就可以解決的嗎……最簡(jiǎn)單當(dāng)然spring boot

2018年7月29日 04:37
編輯回答
情未了
   json的話 可以使用Jackson插件 可以將對(duì)象轉(zhuǎn)換為json類(lèi)型  對(duì)于SpringMVC 只需要加上@ResponesBady就可以自動(dòng)將對(duì)象轉(zhuǎn)換成json 響應(yīng)給前端 如果存在跨域 可以使用jsonp來(lái)處理
2017年3月21日 16:44