Spring+Hibernate+Blazeds+Geotools 系统开发技术(山西农业大学—–左脑版)

山西农业大学    左脑  于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。

转载申明:

  本文可以随便转载,希望有朋友可以和我共同研究。

 

 

转载自:https://blog.csdn.net/sxausgyy/article/details/7976718

You may also like...