1、引言
前段时间做了一个简单的电子资源下载网站,希望能通过这个网站实现电子资源的变现,但是由于时间的缘故,很多功能都没有实现,特别是用户无法直接查看网站所有资源的信息,这就是个致命的弱点,这两天加上了这个功能,目前已经能查看了,虽然依旧比较简陋,但凑合能用,只能在后期慢慢升级,逐渐将其发展成一个成熟的网站,下面就给大家简单介绍一下。
2、网站介绍
为了节省成本,我没有选择购买新域名,而是在我原有的一个域名之下,分出了一个二级域名,并将网站和他进行绑定,通过这个二级域名就能访问我的网站,网站地址如下:
http://code.drjtrtj.xyz/
2.1、网站构成
目前网站只有三个页面,一个主页,一个跳转下载地址的页面,最后就是展示所有下载信息的页面。
2.1.1、主页介绍
下图是主页在pc端访问的效果:
下图是主页在移动端访问的效果:
移动端访问和pc端访问效果都差不多,点击上方更多源码那里就能跳转所有源码信息的展示页面,通过下方的微信二维码就能联系到我,我目前主要提供针对网站的数据的定向爬取操作,不对app进行爬取,因为现在只有对网站爬取数据能做到几乎无视所有反爬操作。
2.1.2、页面代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>主页</title>
<style type="text/css">
body{
width: 100%;
border: 0 solid;
background: #00bfd9;
}
.rl{
position: relative;
width: 100%;
border: 0 solid;
color: white;
}
.ll_center{
position: absolute;
width: 100%;
top: 100px;
text-align: center;
}
.div_content{
font-size: 2ch;
margin-top: 10px;
}
img{
width: 200px;
margin-top: 10px;
}
</style>
</head>
<body>
<div class="rl">
<div class="ll_center">
<div class="div_content">
<a href="http://code.drjtrtj.xyz/page/code/code.jsp">更多源码下载请点击我</a>
</div>
<div class="div_content">
如需定制源码请扫描下方微信二维码联系
</div>
<img src="img/wx.png">
</div>
</div>
</body>
</html>
2.2、下载信息展示页面
pc端访问效果:
移动端访问效果:
移动端访问和pc端访问效果都略有差别,移动端要紧凑一些,这个后面再慢慢修改升级,左边是源码类型,中间是源码描述,右边是下载地址,点击就能跳转到源码下载的获取页面,下面是源码信息展示页面的代码:
<%@ page import="com.pay.maven.utils.code.GetCodeList" %>
<%@ page import="com.pay.maven.data.DownCode" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>所有源码下载</title>
<style type="text/css">
body{
width: 100%;
border: 0 solid;
background: #00bfd9;
margin: 0 0 30px 0;
padding: 0;
color: black;
text-align: center;
font-size: 17px;
}
div{
margin: 50px 0 20px 0;
font-weight: bold;
font-size: 25px;
}
table{
width: 100%;
border: 1px solid red;
text-align: center;
color: black;
border-collapse: collapse;//边框线合在一起
}
.start{
font-weight: bold;
}
tr td{
border: 1px solid red;
}
a{
color: white;
text-decoration: none;//去除下划线
}
</style>
</head>
<body>
<div>
所有源码下载页面
</div>
<table>
<tr>
<td class="start">源码类型</td>
<td class="start">源码描述</td>
<td class="start">下载地址</td>
</tr>
<%
List<DownCode> list = GetCodeList.queryDownMsg();
String url;
%>
<%
for (int i = 0; i < list.size(); i++) {
url="http://code.drjtrtj.xyz/downCode?id="+list.get(i).getCode_id();
%>
<tr>
<td>Android</td>
<td><%=list.get(i).getCode_msg()%></td>
<td>
<a href="<%=url%>" target="_blank">点击下载</a>
</td>
</tr>
<%
}
%>
</table>
</body>
</html>
里面用到了一个数据库操作的工具类,代码如下:
package com.pay.maven.utils.code;
import com.pay.maven.data.DownCode;
import com.pay.maven.utils.JDBCUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
/**
* 获取所有源码信息
*/
public class GetCodeList {
public static List<DownCode> queryDownMsg(){
List<DownCode> list=null;
Connection conn=null;
try {
QueryRunner runner=new QueryRunner();
conn = JDBCUtils.getConnection();
String sql="SELECT * FROM down_code";
BeanListHandler<DownCode> handler=new BeanListHandler<>(DownCode.class);
list=runner.query(conn,sql,handler);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.closeResource(conn,null);
}
return list;
}
}
2.3、源码下载地址获取页面
pc端访问效果:
移动端访问效果:
我的资源下载是需要付费的,但是价格都不高,几乎都在5元以内,支付宝扫码支付成功后等待几秒就会自动跳转到下载地址,由于常规的源码都很小,所以我是把数据放在蓝奏云网盘里面的,跳转的下载地址就是蓝奏云下载地址,直接下载即可,蓝奏云无需登录就能下载。
2.3.1、核心源码展示
鉴于我这里接入了支付宝支付,所以只能展示核心源码,涉及支付宝密匙之类的私密信息不予以展示,不懂得接入支付宝支付的朋友可以联系我,我这里提供个人接入支付宝支付接口的相关服务,通过我的网站上面展示的微信二维码就能联系到我,核心代码如下:
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String order = request.getParameter("order");//根据订单查询url下载地址
response.setContentType("text/plain; charset=utf-8");//文本类型数据
response.getWriter().write(queryDownStatus(order));
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
if (id.equals("")){
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}else {
int intId=Integer.parseInt(id);//根据id查询下载数据
DownCode downCode = queryDownMsg(id);
String format = sdf.format(new Date());
String url=PayCreate(format,downCode.getCode_account());
if (!url.equals("")){
insertDownMsg(format,downCode.getCode_url());
response.setContentType("text/html; charset=utf-8");//html类型数据
response.getWriter().write("<!DOCTYPE html>\n" +
"<html lang=\"zh-cn\">\n" +
" <head>\n" +
" <meta http-equiv=\"Content-Type\" content=\"text/html\" charset=\"UTF-8\">\n" +
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
" <title>源码下载</title>\n" +
" <style type=\"text/css\">\n" +
" body{\n" +
" width: 100%;\n" +
" border: 0 solid;\n" +
" background: #00bfd9;\n" +
" }\n" +
" .rl_march{\n" +
" position: relative;\n" +
" width: 100%;\n" +
" border: 0 solid;\n" +
" }\n" +
" .ll_center{\n" +
" position: absolute;\n" +
" width: 100%;\n" +
" top: 100px;\n" +
" color: blue;\n" +
" margin: 0 0 0 0;\n" +
" padding: 0 0 0 0;\n" +
" }\n" +
" #d_title{\n" +
" font-size: 5ch;\n" +
" color: white;\n" +
" }\n" +
" #d_msg{\n" +
" font-size: 2ch;\n" +
" color: white;\n" +
" }\n" +
" #code{\n" +
" margin: 20px 0 20px 0;\n" +
" width: 220px;\n" +
" padding: 0 0 0 0;\n" +
" background-color: white;\n" +
" }\n" +
" canvas{\n" +
" margin: 20px 20px 20px 20px;\n" +
" padding: 0;\n" +
" }\n" +
" #order{\n" +
" color: #00bfd9;\n" +
" display: none;\n" +
" }\n" +
" .div_content{\n" +
" font-size: 2ch;\n" +
" margin-top: 10px;\n" +
" }\n" +
" </style>\n" +
" <script src=\"../js/jquery-2.2.4.min.js\"></script>\n" +
" <script src=\"../js/jquery.qrcode.js\"></script>\n" +
" <script type=\"text/javascript\" charset=\"UTF-8\">\n" +
" function submit() {\n" +
" var order=document.getElementById('order');\n" +
" var data=order.innerText;\n" +
" if (data.length>0){\n" +
" $.ajax({\n" +
" url : \"http://code.drjtrtj.xyz/page/downCode\",\n" +
" data:{order:data},\n" +
" method : \"POST\",\n" +
" success : function(response){\n" +
" var newContent = response;\n" +
" if (newContent.length>0){\n" +
" window.location.href=newContent;\n" +
" }else {\n" +
" setTimeout(submit,3000);\n" +
" }\n" +
" },\n" +
" error : function(xhr, status, error) {\n" +
" console.log(\"Error.\");\n" +
" }\n" +
" });\n" +
" }\n" +
" }\n" +
" function CreateCode(url) {\n" +
" url=''+url;\n" +
" $(\"#code\").qrcode({\n" +
" render: \"canvas\",\n" +
" width: 180,\n" +
" height:180,\n" +
" text: url\n" +
" });\n" +
" }\n" +
" $(function () {\n" +
" CreateCode('" +
url +
"');\n" +
" // setTimeout(submit,6000);\n" +
" });\n" +
" </script>\n" +
" </head>\n" +
" <body>\n" +
" <div class=\"rl_march\">\n" +
" <div class=\"ll_center\" align=\"center\">\n" +
" <div id=\"d_title\">" +
downCode.getCode_msg() +
"</div>\n" +
" <div id=\"code\"></div>\n" +
" <div id=\"d_msg\">支付宝扫描上方二维码支付¥" +
downCode.getCode_account() +
"后自动跳转源码下载地址</div>\n" +
" <div id=\"order\">" +
format +
"</div>\n" +
" <div class=\"div_content\">\n" +
" <a href=\"http://code.drjtrtj.xyz/page/code/code.jsp\">更多源码下载请点击我</a>\n" +
" </div>\n" +
" </div>\n" +
" </div>\n" +
" </body>\n" +
"</html>");
}else {
response.setContentType("text/plain; charset=utf-8");//html类型数据
response.getWriter().write("网络卡顿,请刷新页面重新尝试!");
}
}
}