山西农业大学 左脑 于2012年9月13日
今天孩子咳嗽,很揪心,很晚了,把这几天的工作记录下来,以免以后忘记,可以参考一下。
今天有幸学了北风网LV老师的课程,讲的非常好,现在把它记录下来。
有兴趣的加我QQ:19935284 注明:开源GIS研究
软件准备:
1、Myeclipse10
2、Navicat Premium
3、postgresql9.1.5和postgis
4、Visualbox4.1.22
5、Tomcat7
6、jdk7
7、winscp+putty
8、centos6.3
9、geotools8.1
准备工作:
1、首先安装部署postgresql9.1.5和postgis (见我另一篇博文《Centos6.3 下安装postgresql9.1.5和postgis1.5.5(左脑版)》)
2、安装Tomcat7(见我另一篇博文《CentOS安装JDK7和Tomcat7(左脑版)》)
环境搭建与测试:
1、在Myeclipse10中新建Web项目
2、修改项目的默认编码为UTF-8
3、添加Hibernate支持,选择Hibernate3.3 ,勾选前两项,选择Copy checked Library Jars to priject..........................
4、点击下一步:
5、点击下一步:这里取消勾选。
6、点击下一步:我们用Spring改管理Session Factory,这里取消勾选。
7、点击完成。
8、添加Spring支持:选择前5项,并勾选Spring3.0 Web Libraries ,勾选copy checked library contents to.............
9、点击下一步:定位applicationContext.xml 到WEB-INF目录下
10、点击下一步,点击完成:
添加Geotools开发包(这里用geotools8.1)
下载geotools-8.1-bin.zip 并解压,将里面的 jar 文件全选择,复制到项目的WEB-INF/lib目录下:
添加Hibernate-spqtial 包
下载:hibernate-spatial-1.0.jar hibernate-spatial-postgis-1.0.jar postgis.jar 三个包,并复制到WEB-INF/lib 目录下。
(这里注意不要下载hibernate-spatial1.1.1 ,看一下hibernate-spatial的官网,对hibernate的版本有对应的)
配置log4j日志
1、在WEB-INF 下新建log4j的配置文件:log4j.properties
properties文件编码的问题。
点window-preferences-General-Content Types 在Text下选择对应的文件类型再改页面编码为UTF-8然后点Update就可以了。
log4j.properties 文件的内容:
#日志配置文件
#配置日志的输出级别
log4j.rootLogger=debuge,stdout,D,E
#日志信息输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
#指定日志信息输出的格式
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.ConversionPattern=%d{ABSOLUTE}%5p %c{1}:%L-%m%n
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=logs/log.log
log4j.appender.D.Append=true
log4j.appender.D.Threshold=DEBUG
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %m%n
log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File=logs/log_error.log
log4j.appender.E.Append=true
log4j.appender.E.Threshold=ERROR
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%t\:%r] - [%p] %m%n
在web.xml中配置:
<display-name>BFMapServer</display-name>
<description>地理信息服务发布平台</description>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webName.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>6000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
环境测试:
规划包结构:
测试代码:
设计程序添加一个点:
Poi.java 源码
//
package com.sxau.test.bean;
import java.util.Date;
import com.vividsolutions.jts.geom.Point;
public class Poi {
private Integer id;
private String name;
private Date updateDate;
private Point point;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(java.util.Date date) {
this.updateDate = date;
}
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
}
///
Poi.hbm.xml 源码:
///
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.sxau.test.bean.Poi" table="pointtest">
<id name="id" column="id" type="java.lang.Integer">
<generator class="increment"></generator>
</id>
<property name="name" column="name" type="string" length="50"></property>
<property name="updateDate" column="updateDate" type="java.util.Date"></property>
<property name="point" type="org.hibernatespatial.GeometryUserType" >
<column name="point" sql-type="GEOMETRY"/>
</property>
</class>
</hibernate-mapping>
//
PoiDao.java 源码:
///
package com.sxau.test.dao;
public interface PoiDao {
public void addPoint(String name,String wkt);
}
///
PoiDaoImpl.java源码:
//
package com.sxau.test.dao.impl;
import java.util.Date;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.sxau.test.bean.Poi;
import com.sxau.test.dao.PoiDao;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.io.ParseException;
import com.vividsolutions.jts.io.WKTReader;
public class PoiDaoImpl extends HibernateDaoSupport implements PoiDao {
@Override
public void addPoint(String name,String wkt) {
WKTReader wktReader=new WKTReader();
try {
Geometry geom=wktReader.read(wkt);
if(geom.getGeometryType().equals("Point")){
Poi poi=new Poi();
poi.setName(name);
poi.setUpdateDate(new Date());
poi.setPoint((Point)geom);
getHibernateTemplate().save(poi);
}
} catch (ParseException e) {
System.out.println(e.getMessage());
}
}
}
PoiService.java 源码:
//
package com.sxau.test.service;
public interface PoiService {
public void addPoint(String name,String wkt);
}
//
PoiServiceImpl.java 源码
//
package com.sxau.test.service.impl;
import com.sxau.test.dao.PoiDao;
import com.sxau.test.service.PoiService;
public class PoiServiceImpl implements PoiService {
private PoiDao poiDao;
@Override
public void addPoint(String name,String wkt) {
poiDao.addPoint(name,wkt);
}
public PoiDao getPoiDao() {
return poiDao;
}
public void setPoiDao(PoiDao poiDao) {
this.poiDao = poiDao;
}
}
applicationContext.xml 文件配置:
添加:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="org.postgresql.Driver"></property>
<property name="url" value="jdbc:postgresql://192.168.56.102:5432/yongjidata"></property>
<property name="username" value="postgres"></property>
<property name="password" value="postgres"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<property name="defaultAutoCommit" value="true"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernatespatial.postgis.PostgisDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.connection.autocommit">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/sxau/touchscreen/bean/User.hbm.xml</value>
</list>
</property>
</bean>
<bean id="poiDao" class="com.sxau.test.dao.impl.PoiDaoImpl"
scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="poiService" class="com.sxau.touchscreen.service.impl.PoiServiceImpl">
<property name="poiDao">
<ref bean="poiDao" />
</property>
</bean>
web.xml 配置:
添加:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
结果测试:
运行程序:在数据库中自动建立的pointtest这个表,看到这个表,说明我们的环境搭建没有问题。
总结:
就写到这里吧,准备下一篇写一下将BlazeDS整合进去,以及整合openscales、freemarker。
转载申明:
本文可以随便转载,希望有朋友可以和我共同研究。