一.首先,下载5个Struts2核心jar包:

commons-logging-1.1.1.jar

freemarker-2.3.15.jar

ognl-2.7.3.jar

struts2-core-2.1.8.1.jar

xwork-core-2.1.6.jar

二.然后创建Web Project项目,创建完后的项目结构如下  

三,引入jar包

1、复制下载好的5个Struts2核心jar包,粘贴到项目的lib目录下

2、右键点击项目,分别点击【Build Path】à【Configure Build Path…】à【Libraries】à【Add JARs…】,选中项目的lib下的5个Struts2核心jar包,点击确定,把包引入到项目中,点击【OK】即可。

四。修改web.xml文件 ,加入这2句话

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

5.例子:自己写一个jsp页面,struts2可以用实体类,也可以不用,用ajax的data传值就行

<%@ page contentType="text/html;charset=UTF-8" language="java"
import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>首页</title>
<style>
.clear {
clear: both;
}
</style>
<jsp:include page="header.jsp"></jsp:include>
</head>
<body>
<form method="post">
<div class="container" style="width: 100%;">
<div id="mai2" style="height: 50px; width: 100%; margin-top: 15px;"
class="btn-group btn-group-justified">
<a class="btn btn-info" style="width: 10%">频道入口测试</a> <a
href="jsp/templatetools.jsp" class="btn btn-info">返回</a>
</div>
<div class="panel panel-default">
<div class="panel-body" style="width: 99%;">
<table>
<tr>
<td><span style="color: red;">*</span>网站名称:</td>
<td><input type="text" class="form-control" id="site"
name="site" />
</td>
<td>&nbsp;&nbsp;&nbsp;<span style="color: red;">*</span>频道名称:</td>
<td> <select style="width: 150px" id="category" name="category">
<option value="26">国内</option>
<option value="30">国际</option>
<option value="34">财经</option>
<option value="37">地产</option>
<option value="58">能源</option>
<option value="59">教育</option>
<option value="60">科技</option>
<option value="61">环境</option>
<option value="62">汽车</option>
<option value="63">交通</option>
<option value="64">钢铁</option>
<option value="65">文化</option>
<option value="66">旅游</option>
<option value="263">食品</option>
<option value="307">农业</option>
<option value="314">体育</option>
<option value="825">军事</option>
<option value="827">宗教</option>
<option value="829">搜索</option>
<option value="830">论坛</option>
<option value="831">医疗</option>
</select>
</td>
<td>&nbsp;&nbsp;&nbsp;<span style="color: red;">*</span>模板编辑者:</td>
<td><input type="text" class="form-control" id="editor"
name="editor" />
</td>
<td align="right" height="50px">&nbsp;&nbsp;&nbsp;网页编码:</td>
<td><select id="encode" name="encode">
<option value="UTF-8">UTF-8</option>
<option value="gbk">GBK</option>
<option value="gb">GB2312</option>
<option value="iso">ISO-8859-1</option>
</select>
</td>
</tr>
</table> <table>
<tr>
<td align="right"><span style="color: red;">*</span>入口地址:</td>
<td><input type="text" class="form-control" size="50%"
id="base" name="base"/></td>
<td><input type="button" value="下载源码" onclick="getsource();" id="dowsour"/>
</td>
<td><input type="button" value="查询" onclick="Inquiry();" />
</td>
<td align="right"><span style="color: red;">*</span>链接匹配URL:</td>
<td><input type="text" class="form-control" size="47%"
id="regurl" name="regurl" /></td>
</tr>
</table>
<table>
<tr>
<td><span style="color: red;">*</span>块抽取:</td>
<td><select style="height: 27px" id="containerkey1"
name="containerkey1">
<option value="dom">DOM</option>
<option value="reg">正则表达式</option>
<option value="xpath">Xpath</option>
<option value="http">httpwatch</option>
<option value="value">常量</option>
</select></td>
<td><input type="text" size="43%" class="form-control"
id="containervalue1" name="containervalue1" />
</td>
<td><select style="height: 27px" id="containerkey2"
name="containerkey2">
<option value="dom">DOM</option>
<option value="reg">正则表达式</option>
<option value="xpath">Xpath</option>
<option value="http">httpwatch</option>
<option value="value">常量</option>
</select></td>
<td><input type="text" size="43%" class="form-control"
id="containervalue2" name="containervalue2" />
</td>
<td><input type="button" value="测试" onclick="getcontainer();" />
</td>
</tr>
<tr>
<td><span style="color: red;">*</span>链接抽取:</td>
<td><select style="height: 27px" id="urlkey1" name="urlkey1">
<option value="dom">DOM</option>
<option value="reg">正则表达式</option>
<option value="xpath">Xpath</option>
<option value="http">httpwatch</option>
<option value="value">常量</option>
</select></td>
<td><input type="text" class="form-control" id="urlvalue1"
name="urlvalue1" />
</td>
<td><select style="height: 27px" id="urlkey2" name="urlkey2">
<option value="dom">DOM</option>
<option value="reg">正则表达式</option>
<option value="xpath">Xpath</option>
<option value="http">httpwatch</option>
<option value="value">常量</option>
</select></td>
<td><input type="text" class="form-control" id="urlvalue2"
name="urlvalue2" />
</td>
<td><input type="button" value="测试" onclick="geturl();" />
</td>
</tr>
<tr>
<td>分页匹配规则:</td>
<td><select style="height: 27px" id="detailedkey1"
name="detailedkey1">
<option value="dom">DOM</option>
<option value="reg">正则表达式</option>
<option value="xpath">Xpath</option>
<option value="http">httpwatch</option>
<option value="value">常量</option>
</select></td>
<td><input type="text" class="form-control"
id="detailedvalue1" name="detailedvalue1" />
</td>
<td><select style="height: 27px" id="detailedkey2"
name="detailedkey2">
<option value="dom">DOM</option>
<option value="reg">正则表达式</option>
<option value="xpath">Xpath</option>
<option value="http">httpwatch</option>
<option value="value">常量</option>
</select></td>
<td><input type="text" class="form-control"
id="detailedvalue2" name="detailedvalue2" />
</td>
<td><input type="button" value="测试" onclick="getdetailed();" />
</td>
</tr>
</table>
<table>
<tr>
<td align="left">源码:</td>
<td align="left" style="padding-left: 20px">结果:</td>
</tr>
<tr>
<td align="right"><textarea
style="border:solid 1px #f00;border-color: #dddddd;" rows="15%"
cols="60%" id="downloadSource" name="downloadSource" readonly="readonly"
class="form-control"></textarea></td>
<td style="padding-left: 20px"><textarea
style="border:solid 1px #f00;border-color: #dddddd;" rows="15%"
cols="60%" id="crawlDomin" name="crawlDomin"
class="form-control"></textarea>
</td>
</tr>
</table>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<button type="button" class="btn btn-primary" style="margin-left: 300px;"
onclick="getcateTemplate(0);" id="total">总测试</button>
<button type="button" class="btn btn-primary" onclick="getcateTemplate(1);">添加</button>
<button type="reset" class="btn btn-primary">重填</button>
</div>
</div>
</div>
</div>
</div>
<input type="hidden" name="sour" id="sour" >
<jsp:include page="/jsp/footer.jsp"></jsp:include>
</form> </body>

里面会嵌入js方法,data值   前边是action的属性,后面是页面的属性

function getsource() {

        //获得入口地址
var base = document.getElementById("base").value;
if (base == null || base == "") {
alert("入口地址不能为空!");
return;
}
$("#dowsour").attr("disabled","disabled");//这是点击按钮的时候按钮变灰,不能在点击 $.ajax({
type : "post",
url : "getsource.action",
data : {
"base" : base
},
dataType : "json",
success : function(msg) {
var rawHtml = msg.rawHtml;
document.getElementById("downloadSource").value = rawHtml;
document.getElementById("sour").value = rawHtml;
$("#dowsour").removeAttr("disabled");//恢复点击的状态
}
}); } function getcontainer() {
//获取块抽取key值和value值
var containerkey1 = document.getElementById("containerkey1").value;
var containervalue1 = document.getElementById("containervalue1").value;
var containerkey2 = document.getElementById("containerkey2").value;
var containervalue2 = document.getElementById("containervalue2").value;
var sour=document.getElementById("sour").value;
if ((containervalue1 == null || containervalue1 == "")
&& (containervalue2 == null || containervalue2 == "")) {
alert("块抽取不能为空!");
return;
} if(sour==null||sour==""){
alert("请先下载源码");
return;
}
$.ajax({
type : "post",
url : "getcontainer.action",
data : {
"containerkey1" : containerkey1,
"containervalue1" : containervalue1,
"containerkey2" : containerkey2,
"containervalue2" : containervalue2,
"sour":sour
},
dataType : "json",
success : function(msg) {
var data = msg.data;
var resData = "块抽取测试:\n";
for ( var i = 0; i < data.length; i++) {
if (data[i].firstSourceText != "") {
resData += data[i].firstSourceText
+ "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n";
} else {
resData += data[i].firstSourceText
+ "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n";
}
}
var end = resData.lastIndexOf("\n");
resData = resData.substring(0, end);
document.getElementById("crawlDomin").value = resData;
} }); } function geturl() {
//获取链接key值和value值
var urlkey1 = document.getElementById("urlkey1").value;
var urlkey2 = document.getElementById("urlkey2").value;
var urlvalue1 = document.getElementById("urlvalue1").value;
var urlvalue2 = document.getElementById("urlvalue2").value;
var containerkey1 = document.getElementById("containerkey1").value;
var containerkey2 = document.getElementById("containerkey2").value;
var containervalue1 = document.getElementById("containervalue1").value;
var containervalue2 = document.getElementById("containervalue2").value;
var sour=document.getElementById("sour").value;
if ((urlvalue1 == null || urlvalue1 == "")
&& (urlvalue2 == null || urlvalue2 == "")) {
alert("抽取链接不能为空!");
return;
}
if ((containervalue1 == null || containervalue1 == "")
&& (containervalue2 == null || containervalue2 == "")) {
alert("请填写块抽取");
return;
}
if(sour==null||sour==""){
alert("请先下载源码");
return;
}
$.ajax({
type : "post",
url : "getcontainer.action",
data : {
"urlkey1" : urlkey1,
"urlkey2" : urlkey2,
"urlvalue1" : urlvalue1,
"urlvalue2" : urlvalue2,
"containervalue1":containervalue1,
"containervalue2":containervalue2,
"containerkey1":containerkey1,
"containerkey2":containerkey2,
"sour":sour
},
dataType : "json",
success : function(msg) {
var data = msg.data;
var resData = "链接抽取:\n";
for ( var i = 0; i < data.length; i++) {
if (data[i]!= "") {
resData += data[i]+ "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n";
} else {
resData += data[i]+ "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n";
}
}
var end = resData.lastIndexOf("\n");
resData = resData.substring(0, end);
document.getElementById("crawlDomin").value = resData; }
}); } function getdetailed() { //获取分页匹配规则
var detailedkey1 = document.getElementById("detailedkey1").value;
var detailedvalue1 = document.getElementById("detailedvalue1").value;
var detailedkey2 = document.getElementById("detailedkey2").value;
var detailedvalue2 = document.getElementById("detailedvalue2").value;
var sour=document.getElementById("sour").value; if ((detailedvalue1 == null || detailedvalue1 == "")
&& (detailedvalue2 == null || detailedvalue2 == "")) {
alert("分页匹配规则不能为空!");
return;
}
if(sour==null||sour==""){
alert("请先下载源码");
return;
}
$.ajax({
type : "post",
url : "getcontainer.action",
data : {
"detailedkey1" : detailedkey1,
"detailedvalue1" : detailedvalue1,
"detailedkey2" : detailedkey2,
"detailedvalue2" : detailedvalue2,
"sour":sour
},
dataType : "json",
success : function(msg) {
var data = msg.data;
var resData = "分页匹配规则:\n";
for ( var i = 0; i < data.length; i++) {
if (data[i]!= "") {
resData += data[i]+ "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n";
} else {
resData += data[i]+ "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n";
}
}
var end = resData.lastIndexOf("\n");
resData = resData.substring(0, end);
document.getElementById("crawlDomin").value = resData;
}
}); } function getcateTemplate(obj) { //获取网站名称
var site = document.getElementById("site").value;
if(site==null||site==""){
alert("网站名称不能为空");
return;
}
//获取频道名称
var category = document.getElementById("category").value;
if(category==null||category==""){
alert("二级频道不能为空");
return;
}
//获取模板编辑者
var editor = document.getElementById("editor").value;
if(editor==null||editor==""){
alert("模板编辑不能为空");
return;
}
//获取编码
var encode = document.getElementById("encode").value;
//获取入口地址
var base = document.getElementById("base").value;
if(base==null||base==""){
alert("入口地址不能为空");
return;
} //获取块抽取key值和value值
var containerkey1 = document.getElementById("containerkey1").value;
var containervalue1 = document.getElementById("containervalue1").value;
var containerkey2 = document.getElementById("containerkey2").value;
var containervalue2 = document.getElementById("containervalue2").value;
if ((containervalue1 == null || containervalue1 == "")
&& (containervalue2 == null || containervalue2 == "")) {
alert("块抽取不能为空");
return;
}
//获取入口地址匹配的url
var regurl = document.getElementById("regurl").value;
if(regurl==null||regurl==""){
alert("链接匹配url不能为空");
return;
}
//抽取链接匹配
var urlkey1 = document.getElementById("urlkey1").value;
var urlkey2 = document.getElementById("urlkey2").value;
var urlvalue1 = document.getElementById("urlvalue1").value;
var urlvalue2 = document.getElementById("urlvalue2").value;
if ((urlvalue1 == null || urlvalue1 == "")
&& (urlvalue2 == null || urlvalue2 == "")) {
alert("链接匹配不能为空");
return;
} //获取分页匹配规则
var detailedkey1 = document.getElementById("detailedkey1").value;
var detailedvalue1 = document.getElementById("detailedvalue1").value;
var detailedkey2 = document.getElementById("detailedkey2").value;
var detailedvalue2 = document.getElementById("detailedvalue2").value;
if(obj==0){
$("#total").attr("disabled","disabled");
$.ajax({
type : "post",
url : "categoryTemplate.action",
data : {
"site" : site,
"category" : category,
"editor" : editor,
"encode" : encode,
"base" : base,
"containerkey1" : containerkey1,
"containervalue1" : containervalue1,
"containervalue2" : containervalue2,
"containerkey2" : containerkey2,
"regurl" : regurl,
"urlkey2" : urlkey2,
"urlkey1" : urlkey1,
"urlvalue1" : urlvalue1,
"urlvalue2" : urlvalue2,
"detailedkey1" : detailedkey1,
"detailedvalue1" : detailedvalue1,
"detailedkey2" : detailedkey2,
"detailedvalue2" : detailedvalue2 },
dataType : "json",
success : function(msg) {
var data = msg.data;
var resData = "全部测试:\n";
for ( var i = 0; i < data.length; i++) {
if (data[i].url == "") {
resData += "链接抽取:\n" + null;
} else {
resData += "链接抽取:\n" + data[i].url;
}
resData += "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n";
}
var end = resData.lastIndexOf("\n");
resData = resData.substring(0, end);
document.getElementById("crawlDomin").value = resData;
$("#total").removeAttr("disabled"); }
});
} if(obj==1){
$.ajax({
type : "post",
url : "addbase.action",
data : {
"site" : site,
"category" : category,
"editor" : editor,
"encode" : encode,
"base" : base,
"containerkey1" : containerkey1,
"containervalue1" : containervalue1,
"containervalue2" : containervalue2,
"containerkey2" : containerkey2,
"regurl" : regurl,
"urlkey2" : urlkey2,
"urlkey1" : urlkey1,
"urlvalue1" : urlvalue1,
"urlvalue2" : urlvalue2,
"detailedkey1" : detailedkey1,
"detailedvalue1" : detailedvalue1,
"detailedkey2" : detailedkey2,
"detailedvalue2" : detailedvalue2 },
dataType : "json",
success : function(msg) {
var code=msg.code;
if(code==200){
alert("添加成功");
}else if(code==1){
alert("匹配地址错误,添加失败!");
}else{
alert("添加失败");
} }
}); }
} function Inquiry(){
//获得入口地址
var base = document.getElementById("base").value;
if (base == null || base == "") {
alert("入口地址不能为空!");
return;
}
$.ajax({
type : "post",
url : "query.action",
data : {
"base" : base
},
dataType : "json",
success : function(msg) {
var flag=msg.flag;
if(flag==1){ alert("网站已经存在");
qingkong();
//获取网站名称
var site=msg.template.fields.site.rule;
for(var i=0;i<site.length;i++){
var re=site[i];
var start=re.indexOf(":");
var value=re.substring(start+1);
document.getElementById("site").value =value;
}
//获取编码
var encode=msg.template.option.encode;
document.getElementById("encode").value =encode;
//获取频道名称
var category=msg.template.fields.category.rule;
for(var i=0;i<category.length;i++){
var re=category[i];
var start=re.indexOf(":");
var value=re.substring(start+1);
document.getElementById("category").value =value;
}
//获取模板编辑者
var editor=msg.template.fields.editor.rule;
for(var i=0;i<editor.length;i++){
var re=editor[i];
var start=re.indexOf(":");
var value=re.substring(start+1);
document.getElementById("editor").value =value;
} //获取链接匹配
var regurl=msg.regurl;
document.getElementById("regurl").value =regurl; //获取链接Url
var url=msg.template.fields.url.rule;
for( var i = 0; i < url.length; i++){
var re=url[i];
var start=re.indexOf(":");
var key=re.substring(0,start);
var value=re.substring(start+1);
var keyId="urlkey"+(i+1);
var valId="urlvalue"+(i+1);
document.getElementById(keyId).value =key;
document.getElementById(valId).value =value;
}
//获取块
var container=msg.template.container.rule;
for( var i = 0; i < container.length; i++){
var re=container[i];
var start=re.indexOf(":");
var key=re.substring(0,start);
var value=re.substring(start+1);
var keyId="containerkey"+(i+1);
var valId="containervalue"+(i+1);
document.getElementById(keyId).value =key;
document.getElementById(valId).value =value;
}
//获取分页匹配
var rules = msg.template.follow_rules["#1"].rule;
for( var i = 0; i < rules.length; i++){
var re=rules[i];
var start=re.indexOf(":");
var key=re.substring(0,start);
var value=re.substring(start+1);
var keyId="detailedkey"+(i+1);
var valId="detailedvalue"+(i+1);
document.getElementById(keyId).value =key;
document.getElementById(valId).value =value;
}
}else {
alert("网站不存在");
qingkong();
} }
});
}
function qingkong(){
document.getElementById("site").value ="";
document.getElementById("category").value ="26";
document.getElementById("editor").value ="";
document.getElementById("regurl").value ="";
document.getElementById("detailedkey1").value ="dom";
document.getElementById("detailedkey2").value ="dom";
document.getElementById("detailedvalue1").value ="";
document.getElementById("detailedvalue2").value ="";
document.getElementById("containerkey1").value ="dom";
document.getElementById("containerkey2").value ="dom";
document.getElementById("containervalue1").value ="";
document.getElementById("containervalue2").value ="";
document.getElementById("urlkey1").value ="dom";
document.getElementById("urlkey2").value ="dom";
document.getElementById("urlvalue1").value ="";
document.getElementById("urlvalue2").value ="";
document.getElementById("encode").value ="UTF-8";
}

在创建action,这里面的字段就相当于实体类里的属性值了

package com.geedata.temp.action;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.geedata.temp.server.Template;
import com.opensymphony.xwork2.ActionSupport; public class TemplateAction extends ActionSupport { private static final long serialVersionUID = 1L;
private String regurl = "";// url链接匹配
private String detailedkey1 = "";// 详细页,分页规则
private String detailedkey2 = "";
private String detailedvalue1 = "";
private String detailedvalue2 = "";
private String base = "";// 入口地址
private String keywords = "";// 关键词
private String beginPage;// 开始页数
private String factor;// 每页条数
private String pages;// 采集页数
private String urlencode = "";// 关键字编码格式
private String encode = "";// 页面采集编码格式
private boolean enablelist;// 是否采集列表页
private boolean enablePagination;// 是否对分页进行采集
private boolean enableBlock;// 是否配置快内容
private String method = "";// 传输方式
private String containerkey1 = "";// 块抽取
private String containerkey2 = "";
private String containervalue1 = "";
private String containervalue2 = "";
private String titlekey1 = "";// 标题
private String titlekey2 = "";
private String titlevalue1 = "";
private String titlevalue2 = "";
private String urlkey1 = "";// 获取链接,链接抽取
private String urlkey2 = "";
private String urlvalue1 = "";
private String urlvalue2 = "";
private String sourcekey1 = "";// 来源
private String sourcekey2 = "";
private String sourcevalue1 = "";
private String sourcevalue2 = "";
private String browsekey1 = "";// 浏览数
private String browsekey2 = "";
private String browsevalue1 = "";
private String browsevalue2 = "";
private String commentkey1 = "";// 评论数
private String commentkey2 = "";
private String commentvalue1 = "";
private String commentvalue2 = "";
private String authorkey1 = "";// 作者
private String authorkey2 = "";
private String authorvalue1 = "";
private String authorvalue2 = "";
private String contentkey1 = "";// 内容
private String contentkey2 = "";
private String contentvalue1 = "";
private String contentvalue2 = "";
private String ptimekey1 = "";// 发布时间
private String ptimekey2 = "";
private String ptimevalue1 = "";
private String ptimevalue2 = "";
private String summarykey1 = "";// 摘要
private String summarykey2 = "";
private String summaryvalue1 = "";
private String summaryvalue2 = "";
private String type = "";// 网站类别
private String editor = "";// 编辑者
private String site = "";// 网站名称
private String category = "";// 频道
private String results = "";// 结果
private String downloadSource = "";// 下载源码
private String sour="";// 源码集
private String icp="";// icp备案号
private String reprintedkey1="";//转载数
private String reprintedkey2="";
private String reprintedvalue1="";
private String reprintedvalue2="";
private String otherkey1="";//其它
private String otherkey2="";
private String othervalue1="";
private String othervalue2="";
private String filter="";//过滤 /**
* 查询方法
*
* @throws IOException
*/
public String query() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
response.setContentType("text/json;charset=gb2312");
if (!"".equals(base)) {
Template tem = new Template();
JSONObject json = tem.checkTemplate(request, base);
if (json != null) {
json.put("flag", 1);
String data = json.toString();
response.getWriter().write(data);
} else {
response.getWriter().write("{\"flag\":\"0\"}");
}
} return null;
} /**
* 获取关键词源码
*
* @throws IOException
*/
public String getkeysource() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json;charset=gb2312");
Template tem = new Template();
if("".equals(factor)||factor.equals(null)){
factor="";
}
String temp = "{\"urls\": {\"params\": {\"keywords\": \"" + keywords
+ "\",\"beginPage\": \"" + beginPage + "\"," + "\"factor\": \""
+ factor + "\",\"pages\": \"1\",\"urlencode\": \"utf-8\"}}}";
JSONObject getReturnData = tem.downloadRawhHtml(temp, base.trim());
String data = getReturnData.toString();
response.getWriter().write(data);
return null; } /**
* 获取内容页和频道源码
*
* @throws IOException
*/
public String getsource() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json;charset=gb2312");
Template tem = new Template();
JSONObject getReturnData = tem.downloadRawhHtml("",
base.replace("\\", "\\\\").replace("\"", "\\\""));
String data = getReturnData.toString();
response.getWriter().write(data); return null;
} /**
* 获取所有单点测试
*
* @throws IOException
*/
public String getcontainer() throws IOException {
JSONObject json = new JSONObject();
String containerrules = "";
String containerrules1 = "";
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json;charset=gb2312");
JSONArray jsonArray = new JSONArray();
JSONArray jsonArray2 = new JSONArray();
/**
* 判断块抽取
*/
if (!"".equals(containervalue1) && !"".equals(containervalue2)) {
containerrules = containerkey1 + ":" + containervalue1;
containerrules1 = containerkey2 + ":" + containervalue2;
jsonArray2.add(containerrules);
jsonArray2.add(containerrules1);
} else if (!"".equals(containervalue1) && "".equals(containervalue2)) {
containerrules = containerkey1 + ":" + containervalue1;
jsonArray2.add(containerrules);
} else if ("".equals(containervalue1) && !"".equals(containervalue2)) {
containerrules = containerkey2 + ":" + containervalue2;
jsonArray2.add(containerrules);
} jsonArray = point(urlkey1, urlvalue1, urlkey2, urlvalue2, jsonArray);// 链接
jsonArray = point(detailedkey1, detailedvalue1, detailedkey2,
detailedvalue2, jsonArray);// 分页
jsonArray = point(titlekey1, titlevalue1, titlekey2, titlevalue2,
jsonArray);// 标题
jsonArray = point(authorkey1, authorvalue1, authorkey2, authorvalue2,
jsonArray);// 作者
jsonArray = point(sourcekey1, sourcevalue1, sourcekey2, sourcevalue2,
jsonArray);// 来源
jsonArray = point(browsekey1, browsevalue1, browsekey2, browsevalue2,
jsonArray);// 浏览数
jsonArray = point(commentkey1, commentvalue1, commentkey2,
commentvalue2, jsonArray);// 评论数
jsonArray = point(reprintedkey1, reprintedvalue1, reprintedkey2,
reprintedvalue2, jsonArray);// 转载数
jsonArray = point(ptimekey1, ptimevalue1, ptimekey2, ptimevalue2,
jsonArray);// 发布时间
jsonArray = point(contentkey1, contentvalue1, contentkey2,
contentvalue2, jsonArray);// 判断原文内容
jsonArray = point(summarykey1, summaryvalue1, summarykey2,
summaryvalue2, jsonArray);// 原文摘要
jsonArray = point(otherkey1, othervalue1, otherkey2,
othervalue2, jsonArray);//其它 json.put("rawHtml", sour);
json.put("container", jsonArray2);
json.put("rule", jsonArray);
String data2 = json.toString();
Template tem = new Template();
JSONObject getReturnData = tem.displayForSingle(data2);
String data = getReturnData.toString();
response.getWriter().write(data);
return null;
} /**
* 封装单点测试值
*/ public JSONArray point(String key1, String value1, String key2,
String value2, JSONArray jsonArray) {
String rules = "";
String rules1 = "";
if (!"".equals(value1) && !"".equals(value2)) {
rules1 = key1 + ":" + value1;
rules = key2 + ":" + value2;
jsonArray.add(rules1);
jsonArray.add(rules);
} else if (!"".equals(value1) && "".equals(value2)) {
rules = key1 + ":" + value1;
jsonArray.add(rules);
} else if ("".equals(value1) && !"".equals(value2)) {
rules = key2 + ":" + value2;
jsonArray.add(rules);
}
return jsonArray; } /**
* 把频道添加到数据库
*
* @throws IOException
*/
public String addbase() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json;charset=gb2312");
if (!regularGroup(regurl, base)) {
response.getWriter().write("{\"code\":\"1\"}");
return null;
}
HttpServletRequest request = ServletActionContext.getRequest();
String templist = packcategory();
Template add = new Template();
JSONObject json = add.persistTemplate(request, templist);
String data = json.toString();
response.getWriter().write(data);
return null;
} /**
* 把内容添加到数据库
*
* @throws IOException
*/
public String adddetail() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json;charset=gb2312");
boolean flag=regularGroup(regurl, base);
if (flag==false) {
response.getWriter().write("{\"code\":\"1\"}");
return null;
}
HttpServletRequest request = ServletActionContext.getRequest(); String templist = packdetail();
Template add = new Template();
JSONObject json = add.persistTemplate(request, templist);
String data = json.toString();
response.getWriter().write(data);
return null;
} /**
* 把关键字模板添加到数据库
*
* @throws IOException
*/
public String addkwlist() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json;charset=gb2312");
boolean flag=regularGroup(regurl, base);
if (flag==false) {
response.getWriter().write("{\"code\":\"1\"}");
return null;
}
HttpServletRequest request = ServletActionContext.getRequest();
String templist = packkwlist();
Template add = new Template();
JSONObject json = add.persistTemplate(request, templist);
String data = json.toString();
response.getWriter().write(data);
return null;
} /**
* 把json模板添加到数据库
*
* @throws IOException
*/
public String addjson() throws IOException{
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/json;charset=gb2312");
boolean flag=regularGroup(regurl, base);
if (flag==false) {
response.getWriter().write("{\"code\":\"1\"}");
return null;
}
HttpServletRequest request = ServletActionContext.getRequest();
String templist = jsonTemplate();
System.out.println(templist);
Template add = new Template();
JSONObject json = add.persistTemplate(request, templist);
String data = json.toString();
response.getWriter().write(data);
return null;
}
/**
* 获取频道入口的总测试
*
* @return
* @throws IOException
*/
public String categoryTemplate() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
response.setContentType("text/json;charset=gb2312");
String templist = packcategory();
Template tem = new Template();
JSONObject getReturnData = tem.displayCrawl(templist, base, request);
String data = getReturnData.toString();
response.getWriter().write(data);
return null;
} /**
* 获取关键词总测试
*
* @return
* @throws IOException
*/
public String kwlist() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
response.setContentType("text/json;charset=gb2312");
String templist = packkwlist();
Template tem = new Template();
JSONObject getReturnData = tem.displayCrawl(templist, base, request);
String data = getReturnData.toString();
response.getWriter().write(data);
return null;
} /**
* 获取内容页模板总测试
*
* @return
* @throws IOException
*/
public String detail() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
response.setContentType("text/json;charset=gb2312");
String templist = packdetail();
Template tem = new Template();
JSONObject getReturnData = tem.displayCrawl(templist, base, request);
String data = getReturnData.toString();
response.getWriter().write(data);// 这里面传的是json字符串
return null;
} /**
* 获取json模板总测试
*
* @return
* @throws IOException
*/
public String jsontem() throws IOException {
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
response.setContentType("text/json;charset=gb2312");
String templist = jsonTemplate();
System.out.println(templist);
Template tem = new Template();
JSONObject getReturnData = tem.displayCrawl(templist, base, request);
String data = getReturnData.toString();
response.getWriter().write(data);// 这里面传的是json字符串
return null;
} /**
* 封装关键字总模板
*/
public String packkwlist() {
String containerrules = "";
String rules1 = "";
String urlrules = "";
String titlerules = "";
String autorules = "";
String sourrules = "";
String browrules = "";
String comrules = "";
String ptimerules = "";
String sumrules = "";
String otherrule=""; // 判断分页匹配
rules1 = detailedrules(detailedkey1, detailedkey2, detailedvalue1,
detailedvalue2);
// 获得块抽取
containerrules = containerules(containerkey1, containerkey2,
containervalue1, containervalue2);
// 判断标题
titlerules = rules(titlekey1, titlekey2, titlevalue1, titlevalue2); // 判断作者
autorules = rules(authorkey1, authorkey2, authorvalue1, authorvalue2);
// 判断来源
sourrules = rules(sourcekey1, sourcekey2, sourcevalue1, sourcevalue2);
// 判断浏览数
browrules = denumber(browsekey1, browsekey2, browsevalue1,
browsevalue2, "${browse}");
// 判断评论数
comrules = denumber(commentkey1, commentkey2, commentvalue1,
commentvalue2, "${comment}");
// 判断发布时间
ptimerules = rules(ptimekey1, ptimekey2, ptimevalue1, ptimevalue2);
// 判断原文摘要
sumrules = rules(summarykey1, summarykey2, summaryvalue1, summaryvalue2);
// 判断链接抽取
urlrules = denumber(urlkey1, urlkey2, urlvalue1, urlvalue2, "${url}");
//判断其它抽取
otherrule=rules(otherkey1, otherkey2, othervalue1, othervalue2); regurl = regurl.replace("\\", "\\\\").replace("\"", "\\\"");
keywords = keywords.replace("\\", "\\\\").replace("\"", "\\\"");
base = base.replace("\\", "\\\\").replace("\"", "\\\"");
if("".equals(factor)||factor.equals(null)){
factor="";
}
String rules = "{\"regurl\": \"" + regurl + "\",\"template\": {";
String rules2 = "\"urls\": {\"base\": \""
+ base
+ "\",\"params\": {\"keywords\": \""
+ keywords
+ "\","
+ "\"beginPage\": \""
+ beginPage
+ "\",\"factor\": \""
+ factor
+ "\",\"pages\": \""
+ pages
+ "\","
+ "\"urlencode\": \"utf-8\",\"enable\": \"true\"},\"method\": \"GET\"},"; String con = "\"container\": {" + containerrules + "},";
String fields = "\"title\": {\"name\": \"title\"," + titlerules
+ "},\"source\": {\"name\": \"source\"," + sourrules + "},"
+ "\"ptime\": {\"name\": \"ptime\"," + ptimerules
+ "},\"summary\": {\"name\": \"summary\"," + sumrules + "},"
+ "\"browse\": {\"name\": \"browse\"," + browrules
+ "},\"comment\": {\"name\": \"comment\"," + comrules + "},"
+ "\"author\": {\"name\": \"author\"," + autorules
+ "},\"url\": {\"name\": \"url\"," + urlrules + "}," +
"\"other\": {\"name\": \"other\"," + otherrule + "},"; String fields3 = "\"type\": {\"name\": \"type\",\"rule\": [\"value:"
+ type
+ "\"]},\"editor\": {\"name\": \"editor\",\"rule\": [\"value:"
+ editor + "\"]},"
+ "\"site\": {\"name\": \"site\",\"rule\": [\"value:" + site
+ "\"]}";
String fields2 = "\"fields\": {" + fields + fields3 + "},"; String pipeline = "\"pipeline\": {\"type\": \"mongo\",\"params\": {\"host\": \"192.168.3.92\",\"port\": 27017,\"mydb\": \"zjj\",\"mytable\": \"alibaba\","
+ "\"user\": \"test\",\"pwd\": \"000000\"}},";
String pipeline2 = "\"request_headers\": {\"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9, */*;q=0.8\","
+ "\"Accept-Language\": \"zh_cn\"},\"concurrent_requests\": \"1\","
+ "\"download_delay\": {\"enable_random\": \"false\",\"download_timeout\": \"1000\"},"
+ "\"add_proxy\": \"true\",\"version\": \"2\",\"encode\": \""
+ encode + "\",\"template_type\": \"kwlist\""; String pipeline3 = "\"option\": {" + pipeline2 + "} }}";
String templist = rules + rules1 + rules2 + con + fields2 + pipeline
+ pipeline3; return templist;
} /**
* 封装内容模板
*/
public String packdetail() {
String rules1 = "";
String titlerules = "";
String autorules = "";
String sourrules = "";
String browrules = "";
String comrules = "";
String ptimerules = "";
String contenrules = "";
String sumrules = "";
String reprules=""; // 判断分页匹配
rules1 = detailedrules(detailedkey1, detailedkey2, detailedvalue1,
detailedvalue2);
// 判断标题
titlerules = rules(titlekey1, titlekey2, titlevalue1, titlevalue2);
// 判断作者
autorules = rules(authorkey1, authorkey2, authorvalue1, authorvalue2);
// 判断来源
sourrules = rules(sourcekey1, sourcekey2, sourcevalue1, sourcevalue2);
// 判断浏览数
browrules = denumber(browsekey1, browsekey2, browsevalue1,
browsevalue2, "${browse}");
// 判断评论数
comrules = denumber(commentkey1, commentkey2, commentvalue1,
commentvalue2, "${comment}");
//判断转载数
reprules=denumber(reprintedkey1, reprintedkey2, reprintedvalue1,
reprintedvalue2, "${reprinted}");
// 判断发布时间
ptimerules = rules(ptimekey1, ptimekey2, ptimevalue1, ptimevalue2);
// 判断原文内容
contenrules = rules(contentkey1, contentkey2, contentvalue1,
contentvalue2);
// 判断原文摘要
sumrules = rules(summarykey1, summarykey2, summaryvalue1, summaryvalue2); regurl = regurl.replace("\\", "\\\\").replace("\"", "\\\"");
type = type.replace("\\", "\\\\").replace("\"", "\\\"");
editor = editor.replace("\\", "\\\\").replace("\"", "\\\"");
site = site.replace("\\", "\\\\").replace("\"", "\\\"");
category = category.replace("\\", "\\\\").replace("\"", "\\\""); String rules = "{\"regurl\": \"" + regurl + "\",\"template\": {";
String url = "\"urls\": {\"base\": \"" + base + "\"},";
String fields = "\"title\": {\"name\": \"title\","
+ titlerules
+ "},\"url\": {\"name\": \"url\",\"rule\": [\"value:${url}\"]},"
+ "\"source\": {\"name\": \"source\"," + sourrules
+ "},\"ptime\": {\"name\": \"ptime\"," + ptimerules
+ "},\"content\": {\"name\": \"content\"," + contenrules + "},"
+ "\"browse\": {\"name\": \"browse\"," + browrules
+ "},\"comment\": {\"name\": \"comment\"," + comrules
+ "},\"reprinted\": {\"name\": \"reprinted\"," + reprules
+ "},\"author\": {\"name\": \"author\"," + autorules
+ "},\"summary\": {\"name\": \"summary\"," + sumrules + "},"; String fields3 = "\"type\": {\"name\": \"type\",\"rule\": [\"value:"
+ type
+ "\"]},\"icp\": {\"name\": \"icp\",\"rule\": [\"value:"
+ icp
+ "\"]},\"editor\": {\"name\": \"editor\",\"rule\": [\"value:"
+ editor
+ "\"]},"
+ "\"site\": {\"name\": \"site\",\"rule\": [\"value:"
+ site
+ "\"]},\"category\": {\"name\": \"category\",\"rule\": [\"value:"
+ category + "\"]}";
String fields2 = "\"fields\": {" + fields + fields3 + "},"; String pipeline = "\"pipeline\": {\"type\": \"mongo\",\"params\": {\"host\": \"192.168.3.92\",\"port\": 27017,\"mydb\": \"zjj\",\"mytable\": \"alibaba\","
+ "\"user\": \"test\",\"pwd\": \"000000\"}},";
String pipeline2 = "\"request_headers\": {\"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9, */*;q=0.8\","
+ "\"Accept-Language\": \"zh_cn\"},\"concurrent_requests\": \"1\","
+ "\"download_delay\": {\"enable_random\": \"false\",\"download_timeout\": \"1000\"},"
+ "\"add_proxy\": \"true\",\"version\": \"2\",\"encode\": \""
+ encode + "\",\"template_type\": \"detail\""; String pipeline3 = "\"option\": {" + pipeline2 + "} }}";
String templist = rules + url + rules1 + fields2 + pipeline + pipeline3;
return templist;
} /**
* 封装频道模板
*/
public String packcategory() {
String rules1 = "";
String containerrules = "";
String urlrules = ""; // 判断分页匹配规则
rules1 = detailedrules(detailedkey1, detailedkey2, detailedvalue1,
detailedvalue2);
// 判断块抽取
containerrules = containerules(containerkey1, containerkey2,
containervalue1, containervalue2);
// 判断链接抽取
urlrules = denumber(urlkey1, urlkey2, urlvalue1, urlvalue2, "${url}"); regurl = regurl.replace("\\", "\\\\").replace("\"", "\\\"");
base = base.replace("\\", "\\\\").replace("\"", "\\\"");
site = site.replace("\\", "\\\\").replace("\"", "\\\"");
editor = editor.replace("\\", "\\\\").replace("\"", "\\\"");
category = category.replace("\\", "\\\\").replace("\"", "\\\""); String rules = "{\"regurl\": \"" + regurl + "\",\"template\": {";
String rules2 = "\"urls\": {\"base\": \"" + base
+ "\",\"method\": \"GET\"},";
String con = "\"container\": {" + containerrules + "},";
String fields = "\"url\": {\"name\": \"url\"," + urlrules
+ "},\"editor\": {\"name\": \"editor\","
+ "\"rule\": [\"value:" + editor
+ "\"]},\"site\": {\"name\": \"site\",\"rule\": [\"value:"
+ site + "\"]},"
+ "\"category\": {\"name\": \"category\",\"rule\": [\"value:"
+ category + "\"]}";
String fields2 = "\"fields\": {" + fields + "},";
String pipeline = "\"pipeline\": {\"type\": \"mongo\",\"params\": {\"host\": \"192.168.3.92\",\"port\": 27017,\"mydb\": \"zjj\",\"mytable\": \"alibaba\","
+ "\"user\": \"test\",\"pwd\": \"000000\"}},";
String pipeline2 = "\"request_headers\": {\"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9, */*;q=0.8\","
+ "\"Accept-Language\": \"zh_cn\"},\"concurrent_requests\": \"1\","
+ "\"download_delay\": {\"enable_random\": \"false\",\"download_timeout\": \"1000\"},"
+ "\"add_proxy\": \"true\",\"version\": \"2\",\"encode\": \""
+ encode + "\",\"template_type\": \"category\""; String pipeline3 = "\"option\": {" + pipeline2 + "} }}";
String templist = rules + rules2 + rules1 + con + fields2 + pipeline
+ pipeline3;
return templist;
} /**
* 封装json模板
*/
public String jsonTemplate(){
String rules1 = "";
String filterrule="";
String temrule="";
String titlerules = "";
String autorules = "";
String sourrules = "";
String browrules = "";
String comrules = "";
String ptimerules = "";
String contenrules = "";
String sumrules = "";
String reprules="";
String urlrules="";
String typerules="";
String editorrules="";
String siterule="";
String caterule="";
String icprule=""; titlerules=rule(titlevalue1);//获取标题
autorules=rule(authorvalue1);//获取作者
urlrules=rule(urlvalue1);//获取链接
sourrules=rule(sourcevalue1);//获取来源
ptimerules=rule(ptimevalue1);//获取发布时间
browrules=rule(browsevalue1);//获取浏览数
comrules=rule(commentvalue1);//获取评论数
typerules=jsonvalue(type);//获取网站类型
editorrules=jsonvalue(editor);//获取模板编辑者
siterule=jsonvalue(site);//获取网站名称
caterule=jsonvalue(category);//获取频道名称
icprule=jsonvalue(icp);//获取icp备案号
reprules=rule(reprintedvalue1);//获取转载数
contenrules=rule(contentvalue1);//获取内容
sumrules=rule(summaryvalue1);//获取摘要
rules1=containerules(containervalue1);//获取块抽取
filterrule=containerules(filter);//获取过滤 String regurlrule="{\"regurl\": \""+regurl+"\",\"template\": {";
if("".equals(keywords)){
temrule="\"urls\": {\"base\": \""+base+"\",\"method\": \"GET\"},";
}else{
temrule="\"urls\": {\"base\": \""+base+"\",\"params\": {\"keywords\": \""+keywords+"\"," +
"\"beginPage\": \""+beginPage+"\",\"factor\": \""+factor+"\",\"pages\": \""+pages+"\",\"urlencode\": \"utf-8\"}," +
"\"method\": \"GET\"},";
} String fit="\"filter\": {\"name\": \"filter\","+filterrule+"},";
String contain="\"container\": {\"name\": \"container\","+rules1+"},"; String fields="\"fields\": {\"title\": {\"name\": \"title\","+titlerules+"},\"url\": {\"name\": \"url\","+urlrules+"}," +
"\"source\": {\"name\": \"source\","+sourrules+"},\"ptime\": {\"name\": \"ptime\","+ptimerules+"}," +
"\"browse\": {\"name\": \"browse\","+browrules+"},\"comment\": {\"name\": \"comment\","+comrules+"}," +
"\"author\": {\"name\": \"author\","+autorules+"},\"type\": {\"name\": \"type\","+typerules+"}," +
"\"editor\": {\"name\":\"editor\","+editorrules+"},\"site\": {\"name\": \"site\","+siterule+"}," +
"\"category\": {\"name\": \"category\","+caterule+"},\"icp\": {\"name\": \"icp\","+icprule+"" +
"},\"reprinted\": {\"name\": \"reprinted\","+reprules+"},\"content\": {\"name\": \"content\","+contenrules+"}," +
"\"summary\": {\"name\": \"summary\","+sumrules+"}},"; String pipeline="\"pipeline\": {\"type\": \"mongo\",\"params\": {\"host\": \"192.168.3.92\",\"port\": 27017," +
"\"mydb\": \"zjj\",\"mytable\": \"alibaba\",\"user\": \"test\",\"pwd\": \"000000\"}},";
String option="\"option\": {\"request_headers\": {\"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9, */*;q=0.8\"," +
"\"Accept-Language\": \"zh_cn\"},\"concurrent_requests\": \"1\"," +
"\"download_delay\": {\"enable_random\": \"false\",\"download_timeout\": \"1000\"}," +
"\"add_proxy\": \"true\",\"version\": \"2\",\"encode\": \""+encode+"\",\"template_type\": \"json\"}}}";
String temlist=regurlrule+temrule+fit+contain+fields+pipeline+option;
return temlist;
} /**
* 封装json模板
*
**/
public String rule(String value){
String jsonrule="";
if("".equals(value)){
jsonrule="\"rule\": []";
}else{
jsonrule="\"rule\": [\"json:"+value+"\"]";
}
return jsonrule;
} /**
* 封装json的value
*/
public String jsonvalue(String value){
String jsonrule="";
if("".equals(value)){
jsonrule="\"rule\": []";
}else{
jsonrule="\"rule\": [\"value:"+value+"\"]";
}
return jsonrule;
}
/**
* 封装块抽取,传入4个值
*
* @param key1
* @param key2
* @param value1
* @param value2
* @return
*/
public String containerules(String key1, String key2, String value1,
String value2) {
String containerrules="";
value1 = value1.replace("\\", "\\\\").replace("\"", "\\\"");
value2 = value2.replace("\\", "\\\\").replace("\"", "\\\"");
if ("".equals(value1) && "".equals(value2)) {
containerrules = "\"name\": \"container\",\"rule\": [],\"enable\": \""
+ enableBlock + "\"";
} else if (!"".equals(value1) && "".equals(value2)) {
enableBlock = true;
containerrules = "\"name\": \"container\",\"rule\": [\"" + key1
+ ":" + value1 + "\"],\"enable\": \"" + enableBlock + "\"";
} else if ("".equals(value1) && !"".equals(value2)) {
enableBlock = true;
containerrules = "\"name\": \"container\",\"rule\": [\"" + key2
+ ":" + value2 + "\"],\"enable\": \"" + enableBlock + "\"";
} else {
enableBlock = true;
containerrules = "\"name\": \"container\",\"rule\": [\"" + key1
+ ":" + value1 + "\",\"" + key2 + ":" + value2
+ "\"],\"enable\": \"" + enableBlock + "\"";
}
return containerrules;
}
/**
* 封装块抽取
* @param value
* @return
*/
public String containerules(String value) {
String containerrules="";
value = value.replace("\\", "\\\\").replace("\"", "\\\""); if ("".equals(value)) {
enableBlock = false;
containerrules = "\"rule\": [],\"enable\": \""
+ enableBlock + "\"";
} else {
enableBlock = true;
containerrules = "\"rule\": [\"json:"+value+"\"],\"enable\": \""+enableBlock+"\""; }
return containerrules;
} /**
* 封装单点测试判断
*
* @return
*/
public String rules(String key1, String key2, String value1, String value2) {
String sumrules="";
value1 = value1.replace("\\", "\\\\").replace("\"", "\\\"");
value2 = value2.replace("\\", "\\\\").replace("\"", "\\\"");
if ("".equals(value1) && "".equals(value2)) {
sumrules = "\"rule\": []";
} else if (!"".equals(value1) && "".equals(value2)) {
sumrules = "\"rule\": [\"" + key1 + ":" + value1 + "\"]";
} else if ("".equals(value1) && !"".equals(value2)) {
sumrules = "\"rule\": [\"" + key2 + ":" + value2 + "\"]";
} else {
sumrules = "\"rule\": [\"" + key1 + ":" + value1 + "\",\"" + key2
+ ":" + value2 + "\"]";
}
return sumrules;
} /**
* 封装分页单点测试
*
* @return
*/ public String detailedrules(String key1, String key2, String value1,
String value2) {
String rules1="";
value1 = value1.replace("\\", "\\\\").replace("\"", "\\\"");
value2 = value2.replace("\\", "\\\\").replace("\"", "\\\"");
if ("".equals(value1) && "".equals(value2)) {
rules1 = "\"follow_rules\": {\"#1\": {\"rule\": [],\"enable\":\""
+ enablelist + "\"}},";
} else if (!"".equals(value1) && "".equals(value2)) {
enablelist = true;
rules1 = "\"follow_rules\": {\"#1\": {\"rule\": [\"" + key1 + ":"
+ value1 + "\"],\"enable\":\"" + enablelist + "\"}},";
} else if ("".equals(value1) && !"".equals(value2)) {
enablelist = true;
rules1 = "\"follow_rules\": {\"#1\": {\"rule\": [\"" + key2 + ":"
+ value2 + "\"],\"enable\":\"" + enablelist + "\"}},";
} else {
enablelist = true;
rules1 = "\"follow_rules\": {\"#1\": {\"rule\": [\"" + key1 + ":"
+ value1 + "\",\"" + key2 + ":" + value2
+ "\"],\"enable\":\"" + enablelist + "\"}},";
}
return rules1;
} /**
* 封装默认值
* @param key1
* @param key2
* @param value1
* @param value2
* @param number 没有值传入的时候,填写个默认值
* @return
*/
public String denumber(String key1, String key2, String value1,
String value2, String number) {
String comrules="";
value1 = value1.replace("\\", "\\\\").replace("\"", "\\\"");
value2 = value2.replace("\\", "\\\\").replace("\"", "\\\"");
if ("".equals(value1) && "".equals(value2)) {
comrules = "\"rule\": [\"value:" + number + "\"]";
} else if (!"".equals(value1) && "".equals(value2)) {
comrules = "\"rule\": [\"" + key1 + ":" + value1 + "\"]";
} else if ("".equals(value1) && !"".equals(value2)) {
comrules = "\"rule\": [\"" + key2 + ":" + value2 + "\"]";
} else {
comrules = "\"rule\": [\"" + key1 + ":" + value1 + "\",\"" + key2
+ ":" + value2 + "\"]";
}
return comrules;
} /**
* 正则表达式的匹配
* @param pattern 正则表达式
* @param matcher 源码
* @return
*/
public boolean regularGroup(String pattern, String matcher) {
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(matcher);
if (m.find()) { // 如果读到
return true;// 返回捕获的数据
} else {
return false; // 否则返回一个空字符串
}
} public String getRegurl() {
return regurl;
} public void setRegurl(String regurl) {
this.regurl = regurl;
} public String getDetailedkey1() {
return detailedkey1;
} public void setDetailedkey1(String detailedkey1) {
this.detailedkey1 = detailedkey1;
} public String getDetailedkey2() {
return detailedkey2;
} public void setDetailedkey2(String detailedkey2) {
this.detailedkey2 = detailedkey2;
} public String getDetailedvalue1() {
return detailedvalue1;
} public void setDetailedvalue1(String detailedvalue1) {
this.detailedvalue1 = detailedvalue1;
} public String getDetailedvalue2() {
return detailedvalue2;
} public void setDetailedvalue2(String detailedvalue2) {
this.detailedvalue2 = detailedvalue2;
} public String getBase() {
return base;
} public void setBase(String base) {
this.base = base;
} public String getKeywords() {
return keywords;
} public void setKeywords(String keywords) {
this.keywords = keywords;
} public String getBeginPage() {
return beginPage;
} public void setBeginPage(String beginPage) {
this.beginPage = beginPage;
} public String getFactor() {
return factor;
} public void setFactor(String factor) {
this.factor = factor;
} public String getPages() {
return pages;
} public void setPages(String pages) {
this.pages = pages;
} public String getUrlencode() {
return urlencode;
} public void setUrlencode(String urlencode) {
this.urlencode = urlencode;
} public String getEncode() {
return encode;
} public void setEncode(String encode) {
this.encode = encode;
} public boolean isEnablelist() {
return enablelist;
} public void setEnablelist(boolean enablelist) {
this.enablelist = enablelist;
} public boolean isEnablePagination() {
return enablePagination;
} public void setEnablePagination(boolean enablePagination) {
this.enablePagination = enablePagination;
} public boolean isEnableBlock() {
return enableBlock;
} public void setEnableBlock(boolean enableBlock) {
this.enableBlock = enableBlock;
} public String getMethod() {
return method;
} public void setMethod(String method) {
this.method = method;
} public String getContainerkey1() {
return containerkey1;
} public void setContainerkey1(String containerkey1) {
this.containerkey1 = containerkey1;
} public String getContainerkey2() {
return containerkey2;
} public void setContainerkey2(String containerkey2) {
this.containerkey2 = containerkey2;
} public String getContainervalue1() {
return containervalue1;
} public void setContainervalue1(String containervalue1) {
this.containervalue1 = containervalue1;
} public String getContainervalue2() {
return containervalue2;
} public void setContainervalue2(String containervalue2) {
this.containervalue2 = containervalue2;
} public String getTitlekey1() {
return titlekey1;
} public void setTitlekey1(String titlekey1) {
this.titlekey1 = titlekey1;
} public String getTitlekey2() {
return titlekey2;
} public void setTitlekey2(String titlekey2) {
this.titlekey2 = titlekey2;
} public String getTitlevalue1() {
return titlevalue1;
} public void setTitlevalue1(String titlevalue1) {
this.titlevalue1 = titlevalue1;
} public String getTitlevalue2() {
return titlevalue2;
} public void setTitlevalue2(String titlevalue2) {
this.titlevalue2 = titlevalue2;
} public String getUrlkey1() {
return urlkey1;
} public void setUrlkey1(String urlkey1) {
this.urlkey1 = urlkey1;
} public String getUrlkey2() {
return urlkey2;
} public void setUrlkey2(String urlkey2) {
this.urlkey2 = urlkey2;
} public String getUrlvalue1() {
return urlvalue1;
} public void setUrlvalue1(String urlvalue1) {
this.urlvalue1 = urlvalue1;
} public String getUrlvalue2() {
return urlvalue2;
} public void setUrlvalue2(String urlvalue2) {
this.urlvalue2 = urlvalue2;
} public String getSourcekey1() {
return sourcekey1;
} public void setSourcekey1(String sourcekey1) {
this.sourcekey1 = sourcekey1;
} public String getSourcekey2() {
return sourcekey2;
} public void setSourcekey2(String sourcekey2) {
this.sourcekey2 = sourcekey2;
} public String getSourcevalue1() {
return sourcevalue1;
} public void setSourcevalue1(String sourcevalue1) {
this.sourcevalue1 = sourcevalue1;
} public String getSourcevalue2() {
return sourcevalue2;
} public void setSourcevalue2(String sourcevalue2) {
this.sourcevalue2 = sourcevalue2;
} public String getBrowsekey1() {
return browsekey1;
} public void setBrowsekey1(String browsekey1) {
this.browsekey1 = browsekey1;
} public String getBrowsekey2() {
return browsekey2;
} public void setBrowsekey2(String browsekey2) {
this.browsekey2 = browsekey2;
} public String getBrowsevalue1() {
return browsevalue1;
} public void setBrowsevalue1(String browsevalue1) {
this.browsevalue1 = browsevalue1;
} public String getBrowsevalue2() {
return browsevalue2;
} public void setBrowsevalue2(String browsevalue2) {
this.browsevalue2 = browsevalue2;
} public String getCommentkey1() {
return commentkey1;
} public void setCommentkey1(String commentkey1) {
this.commentkey1 = commentkey1;
} public String getCommentkey2() {
return commentkey2;
} public void setCommentkey2(String commentkey2) {
this.commentkey2 = commentkey2;
} public String getCommentvalue1() {
return commentvalue1;
} public void setCommentvalue1(String commentvalue1) {
this.commentvalue1 = commentvalue1;
} public String getCommentvalue2() {
return commentvalue2;
} public void setCommentvalue2(String commentvalue2) {
this.commentvalue2 = commentvalue2;
} public String getAuthorkey1() {
return authorkey1;
} public void setAuthorkey1(String authorkey1) {
this.authorkey1 = authorkey1;
} public String getAuthorkey2() {
return authorkey2;
} public void setAuthorkey2(String authorkey2) {
this.authorkey2 = authorkey2;
} public String getAuthorvalue1() {
return authorvalue1;
} public void setAuthorvalue1(String authorvalue1) {
this.authorvalue1 = authorvalue1;
} public String getAuthorvalue2() {
return authorvalue2;
} public void setAuthorvalue2(String authorvalue2) {
this.authorvalue2 = authorvalue2;
} public String getContentkey1() {
return contentkey1;
} public void setContentkey1(String contentkey1) {
this.contentkey1 = contentkey1;
} public String getContentkey2() {
return contentkey2;
} public void setContentkey2(String contentkey2) {
this.contentkey2 = contentkey2;
} public String getContentvalue1() {
return contentvalue1;
} public void setContentvalue1(String contentvalue1) {
this.contentvalue1 = contentvalue1;
} public String getContentvalue2() {
return contentvalue2;
} public void setContentvalue2(String contentvalue2) {
this.contentvalue2 = contentvalue2;
} public String getPtimekey1() {
return ptimekey1;
} public void setPtimekey1(String ptimekey1) {
this.ptimekey1 = ptimekey1;
} public String getPtimekey2() {
return ptimekey2;
} public void setPtimekey2(String ptimekey2) {
this.ptimekey2 = ptimekey2;
} public String getPtimevalue1() {
return ptimevalue1;
} public void setPtimevalue1(String ptimevalue1) {
this.ptimevalue1 = ptimevalue1;
} public String getPtimevalue2() {
return ptimevalue2;
} public void setPtimevalue2(String ptimevalue2) {
this.ptimevalue2 = ptimevalue2;
} public String getSummarykey1() {
return summarykey1;
} public void setSummarykey1(String summarykey1) {
this.summarykey1 = summarykey1;
} public String getSummarykey2() {
return summarykey2;
} public void setSummarykey2(String summarykey2) {
this.summarykey2 = summarykey2;
} public String getSummaryvalue1() {
return summaryvalue1;
} public void setSummaryvalue1(String summaryvalue1) {
this.summaryvalue1 = summaryvalue1;
} public String getSummaryvalue2() {
return summaryvalue2;
} public void setSummaryvalue2(String summaryvalue2) {
this.summaryvalue2 = summaryvalue2;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public String getEditor() {
return editor;
} public void setEditor(String editor) {
this.editor = editor;
} public String getSite() {
return site;
} public void setSite(String site) {
this.site = site;
} public String getCategory() {
return category;
} public void setCategory(String category) {
this.category = category;
} public String getResults() {
return results;
} public void setResults(String results) {
this.results = results;
} public String getDownloadSource() {
return downloadSource;
} public void setDownloadSource(String downloadSource) {
this.downloadSource = downloadSource;
} public String getSour() {
return sour;
} public void setSour(String sour) {
this.sour = sour;
} public String getIcp() {
return icp;
} public void setIcp(String icp) {
this.icp = icp;
} public String getReprintedkey1() {
return reprintedkey1;
} public void setReprintedkey1(String reprintedkey1) {
this.reprintedkey1 = reprintedkey1;
} public String getReprintedkey2() {
return reprintedkey2;
} public void setReprintedkey2(String reprintedkey2) {
this.reprintedkey2 = reprintedkey2;
} public String getReprintedvalue1() {
return reprintedvalue1;
} public void setReprintedvalue1(String reprintedvalue1) {
this.reprintedvalue1 = reprintedvalue1;
} public String getReprintedvalue2() {
return reprintedvalue2;
} public void setReprintedvalue2(String reprintedvalue2) {
this.reprintedvalue2 = reprintedvalue2;
} public String getOtherkey1() {
return otherkey1;
} public void setOtherkey1(String otherkey1) {
this.otherkey1 = otherkey1;
} public String getOtherkey2() {
return otherkey2;
} public void setOtherkey2(String otherkey2) {
this.otherkey2 = otherkey2;
} public String getOthervalue1() {
return othervalue1;
} public void setOthervalue1(String othervalue1) {
this.othervalue1 = othervalue1;
} public String getOthervalue2() {
return othervalue2;
} public void setOthervalue2(String othervalue2) {
this.othervalue2 = othervalue2;
} public String getFilter() {
return filter;
} public void setFilter(String filter) {
this.filter = filter;
} public static void main(String[] args) throws UnsupportedEncodingException {
String name="中石油";
String url=URLEncoder.encode(name, "GBK");
System.out.println(url); }
}

然后还要配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="strutsPackage" extends="struts-default" namespace="/">
<!-- -->
<action name="categoryTemplate" class="com.geedata.temp.action.TemplateAction" method="categoryTemplate">
</action>
<action name="detail" class="com.geedata.temp.action.TemplateAction" method="detail">
</action>
<action name="kwlist" class="com.geedata.temp.action.TemplateAction" method="kwlist">
</action>
<action name="getsource" class="com.geedata.temp.action.TemplateAction" method="getsource">
</action>
<!-- 单点测试方法 -->
<action name="getcontainer" class="com.geedata.temp.action.TemplateAction" method="getcontainer">
</action>
<action name="addbase" class="com.geedata.temp.action.TemplateAction" method="addbase">
</action>
<action name="adddetail" class="com.geedata.temp.action.TemplateAction" method="adddetail">
</action>
<action name="packdetail" class="com.geedata.temp.action.TemplateAction" method="packdetail">
</action>
<action name="addkwlist" class="com.geedata.temp.action.TemplateAction" method="addkwlist">
</action>
<action name="getkeysource" class="com.geedata.temp.action.TemplateAction" method="getkeysource">
</action>
<!-- 查询方法 -->
<action name="query" class="com.geedata.temp.action.TemplateAction" method="query">
</action>
<!--获取json模板总测试 -->
<action name="jsontem" class="com.geedata.temp.action.TemplateAction" method="jsontem">
</action>
<!--获取json模板添加 -->
<action name="addjson" class="com.geedata.temp.action.TemplateAction" method="addjson">
</action> </package> </struts>

因为我这返回的都是null,也不需要跳转页面,所以不需要成功或者失败的跳转,如果想要成功或者失败

<action name="getContainer" class="com.geedata.temp.action.TemplateAction" method="getContainer">
            <result name="success">jsp/contenttemplate.jsp</result>
            <result name="login">login.jsp</result>
        </action>

//删除记录回调函数,默认调用刷新记录方法,
function deleteCallBack(){
reloadGrid("grid");
}

如何搭建struts2框架的更多相关文章

  1. 搭建struts2框架

    struts是一个经典的MVC模式拦截器比过滤器拦截的力度更大 搭建struts2框架1.引入lib包 9个(2.3版本的)common-fileupload;common-io;common-lan ...

  2. 使用Maven搭建Struts2框架的开发环境

    一.创建基于Maven的Web项目

  3. struts2框架搭建(一)

    struts2是一个基于mvc的web应用框架.struts2本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器层(Controller)来建立模型与视图的数据交互. str ...

  4. Struts2框架学习(一)——Struts2的概念及搭建

    一.Struts2的概念 使用优势:1)自动封装参数 2)参数校验 3)结果的处理(转发|重定向) 4)国际化 5)显示等待页面 6)防止表单重复提交 Struts2具有更加先进的架构以及思想 Str ...

  5. eclipse搭建struts2环境及所遇到的问题

    最近几天一直在搭建struts2框架,本身struts2框架的搭建是非常简单的,但不知道为什么最近就是总是报错,报了一大串的错 首先就是每次在类的根路径下创建struts.xml时,就报错,也不知道为 ...

  6. 2018.11.17 Struts2框架入门

    Struts2 框架学习 一.struts2是什么? (1)概念 (2)struts2使用优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交 (3)st ...

  7. Maven构建Struts2框架的注意事项

    [本人出错点:404,就是在web.xml配置文件中少配置了struts.xml的路径] 1.创建Maven,搭建Struts框架,实现最基本的Hello World 在pom.xml中加入strut ...

  8. 搭建一个简单struts2框架的登陆

    第一步:下载struts2对应的jar包,可以到struts官网下载:http://struts.apache.org/download.cgi#struts252 出于学习的目的,可以把整个完整的压 ...

  9. Struts2 框架的快速搭建

    方便myEclipse 手动配置Struts2框架,写下此文,需要的朋友拿走不谢~ 一.引入JAR包 WEB工程->WebRoot->WEB-INF->lib引入Struts2对应版 ...

随机推荐

  1. C++11_ Lambda

    版权声明:本文为博主原创文章,未经博主允许不得转载. 这次主要介绍C++11的Lambda语法,一个非常给力的语法 1.组成 : [...导入符号](...参数)mutable(可改写)  throw ...

  2. LINUX中的DNS服务---DNS集群

    一.DNS集群的理解 在使用DNS的时候,为了缓解服务器的压力,会使用多个辅助DNS服务器来分担主DNS的工作.这些DNS就叫做DNS集群. 二.配置过程 1)在辅DNS中操作如下:(主机号为172. ...

  3. 表单隐藏域与display:none

    有时候前端进行表单填写是分步骤的,每一步的时候其他步骤相关的表单视图不可见: 针对"不可见",以下有两种处理方式: ①display:none 这种方式呢,比较简单,就是将三个步骤 ...

  4. EasyRMS录播管理服务器项目实战:windows上开机自启动NodeJS服务

    本文转自EasyDarwin开源团队成员Penggy的博客:http://www.jianshu.com/p/ef840505ae06 近期在EasyDarwin开源团队开发一款基于EasyDarwi ...

  5. SpreadJS 全面支持 Angular2,V10.2 版本即将发布

    日前,纯前端表格控件 SpreadJS 发布了最新的CTP版本,在此版本中增加了对 Angular2 的支持以及一些 bug 修复. SpreadJS 纯前端表格控件是基于 HTML5 的 JavaS ...

  6. Android 4.0 Camera架构分析之Camera初始化

    Android Camera 采用C/S架构,client 与server两个独立的线程之间使用Binder通信,这已经是众所周知的了.这里将介绍Camera从设备开机,到进入相机应用是如何完成初始化 ...

  7. U盘传送容量与格式问题

    问题 今天想将7.6G的文件拷到U盘里,提示u盘内存不足,其实内存为14+G. 解答 U盘格式对于U盘的传送大小有限制 下面为U盘三种不同格式的应用及优缺点 FAT32格式:为系统默认格式,具有极佳的 ...

  8. 【剑指offer】不使用新变量,交换两个变量的值,C++实现

    # 题目 不使用新变量,交换两个变量的值. # 思路 方法一:使用加减法操作,交换两个变量的值. A = A+B B = A-B A = A-B 方法二:使用异或运算,交换两个变量的值 A = A^B ...

  9. You're Given a String...

    You're given a string of lower-case Latin letters. Your task is to find the length of its longest su ...

  10. __getitem__ 专用方法

    (1)  __getitem__ 专用方法很简单.像普通的方法 clear,keys 和 values 一样,它只是重定向到字典,返回字典的值.但是怎么调用它呢?哦,你可以直接调用 __getitem ...