目录

Servlet实现前后端json数据交互,前端js传输数据,后端fastjson解析json数据,以及Tomcat部署和jquery的部署

Servlet实现前后端json数据交互,前端js传输数据,后端fastjson解析json数据,以及Tomcat部署和jquery的部署

最近写了一个小的web练习项目,后端接受前端传来的json数据,并返回相应的信息

要求如下:

编写一个用于计算加权平均数的Servlet,以Post方式接收如下json格式参数

{

“nums”: [1, 2, 3, 4],

“weight”: [3, 1, 4, 5],

“accuracy”: 2

}

nums表示若干个数,weight表示这些数的权重,accuracy表示保留小数点后多少位(四舍六入五成双)。

首先创建一个web项目

https://i-blog.csdnimg.cn/blog_migrate/ad5f7718c1b440f0b14a9b9cd82607bb.png

部署tomcat,这个在idea中只有完整版才有,社区版是找不到这个Tomcat Server的

项目创建完了要在run->Edit Configurations中新建一个tomcat,选择自己tomcat下载路径即可

https://i-blog.csdnimg.cn/blog_migrate/27c061ceddd9f15634a2e1512705d91f.png

然后创建一个类继承自HttpServlet

接着在web.xml中部署文件

web.xml部署文件

形式如下

https://i-blog.csdnimg.cn/blog_migrate/fe0739e720444c3d4a3c82171637f3a5.png

servlet-mapping 中写的是虚拟目录

由于是前后端交互的,所以我们先编写前端的html代码再来到后端处理数据

html端代码如下:

https://i-blog.csdnimg.cn/blog_migrate/369452ec3aa588f4f87b0b7186e3a61f.png

在这个html界面中我们使用了jquery的库,可以使用各大厂商现成的库,也可在在官网复制一份然后创建一个js文件

这里采用的是复制的方法:

引用jquery库,以及$符号未定义的解决方法:

在官网找到

https://i-blog.csdnimg.cn/blog_migrate/0835b5fab6a17433c3e20ebe23cf6bb4.png

点进去将内容全部复制,然后回到idea,在webapp下创建一个js文件,将所有内容复制过去即可,

在使用的时候就可以

https://i-blog.csdnimg.cn/blog_migrate/170a7af21ee2687e7616e93b677d4165.png

这样来应用jquery库,如果还是出现无法引用的问题,可以尝试选中src按Alt+Enter来查看提示


那么现在html界面已经写完了,我们要在后端对前端发送过来的数据进行处理,

因为用到了Servlet和Fastjson,我们需要在lib引入两个jar包

https://i-blog.csdnimg.cn/blog_migrate/d2b4bfe252160b5db8b29100287b2692.png

主要代码如下

https://i-blog.csdnimg.cn/blog_migrate/9aa8f5877e2d8f28ff43229a3a244609.png

中间的计算我们跳过,直接到最后的返回json上来,

返回数据主要使用PrintWriter这个类

我们通过response来返回这个类的主体

https://i-blog.csdnimg.cn/blog_migrate/05abcdc71747178e168b46c663cb2a41.png

然后对JSONObject添加数据之后

就可以使用printWriter中的write方法来返回数据到前端

https://i-blog.csdnimg.cn/blog_migrate/8f1df308a10f4936f76db88298d8aa14.png

其中可能会出现一个运行时的异常, java.lang.NoClassDefFoundError:com/alibaba/fastjson/JSONOBject

有一个解决方法是复制Tomcat->lib->servlet对应的jar包到jdk->jre->lib->ext中,然后重启ide即可

附一张工程目录图

https://i-blog.csdnimg.cn/blog_migrate/6469089220bf0d5d8015de7cb34da164.png


最后我们来看一看运行效果

https://i-blog.csdnimg.cn/blog_migrate/687ed3613b3e812a853835622f8b61a6.png

F12查看返回数据

https://i-blog.csdnimg.cn/blog_migrate/006c1c37de0e89ca7f65af9dc728d9d5.png