KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > dlog4j > beans > RefererBean


1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 2 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU Library General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
15  */

16 package dlog4j.beans;
17
18 import java.io.Serializable JavaDoc;
19 import java.net.URL JavaDoc;
20 import java.text.DateFormat JavaDoc;
21 import java.text.SimpleDateFormat JavaDoc;
22 import java.util.Date JavaDoc;
23
24 import javax.servlet.http.HttpServletRequest JavaDoc;
25
26 /**
27  * 外部网站引用记录,对应表dlog_site_referer的一条记录
28  * 建表语句:
29  * create table dlog_visit (
30 visitID INTEGER not null,
31 remoteAddr CHAR(15) not null,
32 requestURL VARCHAR(100) not null,
33 userAgent VARCHAR(100) null,
34 visitDate CHAR(8) not null,
35 visitTime CHAR(6) not null,
36 refererURL VARCHAR(200) null,
37 constraint PK_DLOG_VISIT primary key (visitID)
38 )
39  * @author Winter Lau
40  */

41 public class RefererBean implements Serializable JavaDoc {
42
43     public final static String JavaDoc DATE_FORMAT = "yyyyMMdd";
44     public final static String JavaDoc TIME_FORMAT = "HHmmss";
45     
46     public final static DateFormat JavaDoc DATE = new SimpleDateFormat JavaDoc(DATE_FORMAT);
47     public final static DateFormat JavaDoc TIME = new SimpleDateFormat JavaDoc(TIME_FORMAT);
48     
49     protected int id;
50     protected String JavaDoc remoteAddr;
51     protected String JavaDoc refererURL;
52     protected String JavaDoc requestURL;
53     protected String JavaDoc userAgent;
54     protected String JavaDoc visitDate;
55     protected String JavaDoc visitTime;
56     
57     /**
58      * 该构造函数是提供给Hibernate初始化Bean时用
59      */

60     public RefererBean() {
61     }
62     
63     /**
64      * 从反问请求实例中初始化外部引用记录
65      * @param request
66      */

67     public RefererBean(HttpServletRequest JavaDoc request) {
68         refererURL = request.getHeader("referer");
69         remoteAddr = request.getRemoteAddr();
70         userAgent = request.getHeader("user-agent");
71         StringBuffer JavaDoc ru = request.getRequestURL();
72         if(request.getQueryString()!=null){
73             ru.append('?');
74             ru.append(request.getQueryString());
75         }
76         setRequestURL(ru.toString());
77         Date JavaDoc curTime = new Date JavaDoc();
78         visitDate = DATE.format(curTime);
79         visitTime = TIME.format(curTime);
80         curTime = null;
81     }
82     
83     /**
84      * 判断该外部引用是否来自于自身站点
85      * @param request
86      * @return
87      */

88     public boolean isFromOutsite() {
89         if(refererURL!=null)
90         try{
91             URL JavaDoc req_url = new URL JavaDoc(requestURL);
92             URL JavaDoc ref_url = new URL JavaDoc(refererURL);
93             return !req_url.getHost().equalsIgnoreCase(ref_url.getHost());
94         }catch(Exception JavaDoc e){}
95         return false;
96     }
97
98     public int getId() {
99         return id;
100     }
101     public void setId(int id) {
102         this.id = id;
103     }
104     public String JavaDoc getRequestURL() {
105         return requestURL;
106     }
107     public void setRequestURL(String JavaDoc reqUrl) {
108         this.requestURL = reqUrl;
109         trimReqUrl();
110     }
111     
112     protected void trimReqUrl(){
113         if(requestURL==null)
114             return;
115         String JavaDoc url = "";
116         int mainParamIdx = requestURL.indexOf("main=");
117         if(mainParamIdx!=-1){
118             int splitIdx = requestURL.indexOf("&",mainParamIdx);
119             if(splitIdx!=-1){
120                 url = requestURL.substring(0,mainParamIdx);
121                 if((splitIdx+1)<requestURL.length()){
122                     url += requestURL.substring(splitIdx+1);
123                 }
124             }else{
125                 url = requestURL.substring(0,mainParamIdx-1);
126             }
127             requestURL = url;
128         }
129     }
130
131     public String JavaDoc getRefererURL() {
132         return refererURL;
133     }
134     public void setRefererURL(String JavaDoc refererURL) {
135         this.refererURL = refererURL;
136     }
137     public String JavaDoc getRemoteAddr() {
138         return remoteAddr;
139     }
140     public void setRemoteAddr(String JavaDoc remoteAddr) {
141         this.remoteAddr = remoteAddr;
142     }
143     public String JavaDoc getUserAgent() {
144         return userAgent;
145     }
146     public void setUserAgent(String JavaDoc userAgent) {
147         this.userAgent = userAgent;
148     }
149     public String JavaDoc getVisitDate() {
150         return visitDate;
151     }
152     public void setVisitDate(String JavaDoc visitDate) {
153         this.visitDate = visitDate;
154     }
155     public String JavaDoc getVisitTime() {
156         return visitTime;
157     }
158     public void setVisitTime(String JavaDoc visitTime) {
159         this.visitTime = visitTime;
160     }
161     public static void main(String JavaDoc[] args){
162         Date JavaDoc curTime = new Date JavaDoc();
163         String JavaDoc visitDate = DATE.format(curTime);
164         String JavaDoc visitTime = TIME.format(curTime);
165         System.out.println("visitDate="+visitDate);
166         System.out.println("visitTime="+visitTime);
167     }
168 }
169
Popular Tags