servlet+ajax在线生成二维码
前幾天博主寫了一篇在線生成二維碼的文章,因為是在文件上傳案例中的基礎(chǔ)上寫的Demo,所以使用的是Spring+springMVC框架寫的。有小朋友說搭建框架太麻煩,所以博主特意把代碼摘出來,使用最原始的servlet+ajax實現(xiàn)二維碼在線生成不使用任何框架。
很久沒寫原生的servlet代碼感覺有點難受...廢話不多說,直接上代碼。提醒一下博主用的是idea開發(fā)工具
因為是調(diào)用第三方在線生成二維碼首先我們找到一個在線生成二維碼的api接口,因為這樣的api接口有許多,這里我提供一個參考鏈接接口:
http://www.liantu.com/pingtai/
第一步:創(chuàng)建一個web工程項目,項目名字自取也可以和我一樣,我的是createQrCode倒入的jar包也是結(jié)構(gòu)圖中所示。
?第二步:這里我直接將index.jsp頁面改了,項目啟動直接跳轉(zhuǎn)到index頁面,也就是二維碼生成頁面。
<%--Created by IntelliJ IDEA.User: YYBJDate: 2018/7/26Time: 17:22To change this template use File | Settings | File Templates. --%><%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head><script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script><title>Title</title><script type="text/javascript">function getQrCode() {var shortUrl = document.getElementById("shortUrl").value;console.log(shortUrl)$.ajax({url:"/DemoQrCode",type:"GET",cache:false,data:{shortUrl:shortUrl},success:function (data) {alert(data);var ev = eval('(' + data + ')');document.getElementById("imgSrc").src=ev.imgSrc;}})}</script> </head> <body> <h2>生成二維碼</h2> <form ><table><tr><td>請輸入鏈接:</td><td><input type="text" name="shortUrl" id="shortUrl" value="${QrCode.shortUrl}"></td></tr><tr><img id="imgSrc" src="${QrCode.imgSrc}" /></tr><tr><td><input type="button" value="生成二維碼" onclick="getQrCode()"></td></tr></table> </form> </body> </html>注意:ajax的寫法:后臺返回的是json數(shù)據(jù)我們需要將json數(shù)據(jù)賦值到<img>標簽中,這里怎么取值怎么賦值的建議你了解一下。這里博主自己寫的時候也有點懵。因為沒使用框架,數(shù)據(jù)的取出還是有點麻煩。
第三步:修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>DemoQrCode</servlet-name><servlet-class>cn.yybj.action.DemoQrCode</servlet-class></servlet><servlet-mapping><servlet-name>DemoQrCode</servlet-name><url-pattern>/DemoQrCode</url-pattern></servlet-mapping> </web-app>?第四步:創(chuàng)建實體類和controller類
實體類:
package cn.yybj.action;/*** Created by YYBJ on 2018/8/1.* ZCL*/ public class QrCode {private String shorUrl;private String imgSrc;public String getShorUrl() {return shorUrl;}public void setShorUrl(String shorUrl) {this.shorUrl = shorUrl;}public String getImgSrc() {return imgSrc;}public void setImgSrc(String imgSrc) {this.imgSrc = imgSrc;}@Overridepublic String toString() {return "QrCode{" +"shorUrl='" + shorUrl + '\'' +", imgSrc='" + imgSrc + '\'' +'}';} }?為了方便實體類和controller類就放到一起了。
package cn.yybj.action;import com.google.gson.Gson;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;/*** Created by YYBJ on 2018/8/1.* ZCL*/ public class DemoQrCode extends HttpServlet {@Overridepublic void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");System.out.println("================");//獲取請求參數(shù)String shortUrl = req.getParameter("shortUrl");System.out.println(shortUrl);String imgSrc = req.getParameter("imgSrc");//這里就是第三方api的調(diào)用和拼接了imgSrc="http://qr.liantu.com/api.php?text="+shortUrl;QrCode qrCode = new QrCode();//qrCode.setShorUrl(shortUrl);qrCode.setImgSrc(imgSrc);System.out.println(imgSrc);Gson gson = new Gson();String json = gson.toJson(qrCode);resp.getWriter().print(json);}@Overridepublic void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);} }第五步:配置Tomcat,這個沒什么 沒什么可說的,主要是將項目放入Tomcat啟動就行了。
第六步:啟動測試:直接跳轉(zhuǎn)到index頁面也就是如下頁面。若跳轉(zhuǎn)不到看看Tomcat路徑和action的請求及servlet路徑是否正確
到此測試完成希望能幫助到你;
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請說明轉(zhuǎn)載來源。https://blog.csdn.net/weixin_41092717/article/details/81333211
總結(jié)
以上是生活随笔為你收集整理的servlet+ajax在线生成二维码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怪异盒模型and弹性盒模型
- 下一篇: Linux红外遥控驱动HS0038