posts - 119, comments - 62, trackbacks - 0, articles - 0

下面是矩形选择的源代码。多边形选择多加点就可以了。
public class RectSelectAction extends Action {

    
// --------------------------------------------------------- Instance
    
// Variables

    
// --------------------------------------------------------- Methods

    
/**
     * Method execute
     * 
     * 
@param mapping
     * 
@param form
     * 
@param request
     * 
@param response
     * 
@return ActionForward
     
*/

    
public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) 
{
        DynaActionForm rectSelectForm 
= (DynaActionForm) form;
        String startx 
= rectSelectForm.getString("startx");
        String starty 
= rectSelectForm.getString("starty");
        String endx 
= rectSelectForm.getString("endx");
        String endy 
= rectSelectForm.getString("endy");
        Map map 
= (Map) request.getSession().getAttribute("THEMAP");
        Polygon polygon 
= this.creatPolygon(map, startx, starty, endx, endy);
        
if (polygon == null{
            ActionMessages msgs 
= new ActionMessages();
            msgs.add(ActionMessages.GLOBAL_MESSAGE, 
new ActionMessage(
                    
"com.suzhou.message.createPolygonFail"));
            
this.saveMessages(request, msgs);
            
return mapping.findForward("resultPage");
        }

        FeatureLayer menpaiLayer 
= null;
        
for (int i = 0; i < map.getLayers().getCount(); i++{
            
if (map.getLayers().item(i).getName().equals("地物点")) {
                menpaiLayer 
= (FeatureLayer) map.getLayers().item(i);
                System.out.println(menpaiLayer.getName());
                System.out.println(menpaiLayer.getID());
            }

        }

        
if (menpaiLayer == null{
            ActionMessages msgs 
= new ActionMessages();
            msgs.add(ActionMessages.GLOBAL_MESSAGE, 
new ActionMessage(
                    
"com.suzhou.message.layerNotExsist""地物点"));
            
this.saveMessages(request, msgs);
            
return mapping.findForward("resultPage");
        }

        map.getLayers().setGeometry(
true);// 设置返回空间信息
        menpaiLayer.getRecordset().clearRecordset();
        menpaiLayer.getRecordset().clearEnvelope();
        menpaiLayer.getRecordset().clearGeometry();
        map.getLayers().setOrder(
false);
        menpaiLayer.setFilterObject(
null);
        Filter filter2 
= new Filter();
//        filter2.addSubField("BLOCKNAME");
//        filter2.addSubField("MPNUM");
//        filter2.addSubField("MPABNAME");
//        filter2.addSubField("MPSUBNUM");
        
//filter2.setWhereExpression("");
        filter2.setGlobalEnvelope(true);
        filter2.setSpatialShape(polygon);
        filter2.setRelation(Filter.AREA_INTERSECTION);
        menpaiLayer.setFilterObject(filter2);
        map.refresh();
        menpaiLayer.setFilterObject(
null);
        
if (menpaiLayer.getRecordset() == null
                
|| menpaiLayer.getRecordset().getCount() < 1{
            ActionMessages msgs 
= new ActionMessages();
            msgs.add(ActionMessages.GLOBAL_MESSAGE, 
new ActionMessage(
                    
"com.suzhou.message.objectNotFound"));
            
this.saveMessages(request, msgs);
            
return mapping.findForward("resultPage");
        }
else{
            request.setAttribute(
"result",menpaiLayer.getRecordset());
            
return mapping.findForward("resultPage");
        }

    }


    
/**
     * 建立矩形
     * 
     * 
@param map
     * 
@param startx:起点屏幕X坐标
     * 
@param starty:起点屏幕Y坐标
     * 
@param endx:终点屏幕X坐标
     * 
@param endy:终点屏幕Y坐标
     * 
@return
     
*/

    
public Polygon creatPolygon(Map map, String startx, String starty,
            String endx, String endy) 
{
        
try {
            Point pnt1 
= map.toMapPoint(new Double(startx).doubleValue(),
                    
new Double(starty).doubleValue());
            Point pnt2 
= map.toMapPoint(new Double(endx).doubleValue(),
                    
new Double(endy).doubleValue());
            Point pnt11 
= new Point();
            Point pnt22 
= new Point();
            pnt11.setX(pnt1.getX());
            pnt11.setY(pnt2.getY());
            pnt22.setX(pnt2.getX());
            pnt22.setY(pnt1.getY());
            Points points 
= new Points();
            points.addPointObject(pnt1);
            points.addPointObject(pnt11);
            points.addPointObject(pnt2);
            points.addPointObject(pnt22);
            Ring ring 
= new Ring();
            ring.setPoints(points);
            Polygon polygon 
= new Polygon();
            polygon.addRing(ring);
            
return polygon;
        }
 catch (Exception ex) {
            
return null;
        }

    }

}

posted @ 2007-03-20 17:16 Kevin Meng 阅读(384) | 评论 (1)编辑 收藏

当一个web站点发布到互联网上以后,系统的稳定性很重要。而如果你后台用的是oracle 9i,有时候会出现oracle服务意外停止的现象。解决办法是:
(1)给oracle打最新的补丁(很重要)
(2)在控制面板的服务里面选择oracleServiceXXX,选择属性,点“恢复”,把下面的三个操作都设置为“重新启动”就可以了。

posted @ 2007-02-28 14:01 Kevin Meng 阅读(1486) | 评论 (0)编辑 收藏

大家都知道,在进行arcims开发时,经常要重新启动arcIMS服务,如果你还用了arcSDE,那么要启动的服务更多。如果每次都到控制面板中启动,累都累死人了。可以通过批处理来启动这些服务。
新建一个.bat文件,如“启动所有服务.bat”。打开,输入以下代码:
net start "OracleOraHome92TNSListener"
pause
net start "OracleServiceORA"
pause
net start "esri_sde"
pause
net start "ArcIMS Application Server 9.1"
pause
net start "ArcIMS Monitor 9.1"
pause
net start "ArcIMS Tasker 9.1"
pause

说明:
net start "OracleOraHome92TNSListener" --启动Oracle服务
pause --暂停
net start "OracleServiceORA" --启动Oracle服务
net start "szmap_sde" --启动arcSDE服务
net start "ArcIMS Application Server 9.1" --启动arcIMS服务
net start "ArcIMS Monitor 9.1" --启动arcIMS服务
net start "ArcIMS Monitor 9.1" --启动arcIMS服务
注意,启动服务的顺序不能乱。

net命令的详细说明看MS的DOS命令帮助。这里只作简单说明。
net start "serviceKeyName",这里的serviceKeyName是服务的关键字,而不是控制面板中显示的名字,控制面板中显示的名字是DispalyName.要通过服务的DisplayName获得KeyName可以通过以下命令实现:
sc getkeyname "serviceDisplayName"
例如要查询arcSDE服务“ArcSde Service(esri_sde)”的KeyName,可以运行以下命令:
C:\Documents and Settings\menglikun>sc getkeyname "ArcSde Service(esri_sde)"
[SC] GetServiceKeyName SUCCESS  Name = esri_sde
这里可以看出“ArcSde Service(esri_sde)”的KeyName=seri_sde,所以要启动这个SDE服务,只要执行命令:
sc start "seri_sde"
即可。

再新建一个批处理文件“停止所有服务.bat”,打开,输入以下代码:
net stop "ArcIMS Tasker 9.1"
net stop "ArcIMS Monitor 9.1"
net stop "ArcIMS Application Server 9.1"
net stop "szmap_sde"
net stop "OracleOraHome92TNSListener"
注意,停止服务的顺序刚好以启动相反。
这样,大功告成。以后要启动服务,执行“启动所有服务.bat”,停止服务执行“停止所有服务.bat”即可。


posted @ 2007-01-19 23:08 Kevin Meng 阅读(488) | 评论 (0)编辑 收藏

由于文章比较长而且带很多图片,不好在这里贴出,需要者请发邮件到kookmen@163.com索取。

posted @ 2006-11-28 15:31 Kevin Meng 阅读(597) | 评论 (9)编辑 收藏

如果一个网页中有Flash动画,那么javaScript的OnmouseMove事件就无法响应,这时候只要把Flash的背景设置为透明就可以了。
即加入:<param name="wmode" value="transparent">

posted @ 2006-11-12 13:42 Kevin Meng 阅读(349) | 评论 (0)编辑 收藏

一、新建一个Filter,代码如下:
package com.suzhou.util;

import java.io.IOException;
import javax.servlet.*;

public class SetCharacterEncodingFilter implements Filter {
 protected String encoding = null;// ///要制定的编码,在web.xml中配置

 protected FilterConfig filterConfig = null;

 public void destroy() {
  this.encoding = null;
  this.filterConfig = null;
 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {

  if (request.getCharacterEncoding() == null) {
   String encoding = getEncoding();// //得到指定的编码名字
   if (encoding != null)
    request.setCharacterEncoding(encoding);// //设置request的编码
  }
  chain.doFilter(request, response);// /有机会执行下一个filter
 }

 public void init(FilterConfig filterConfig) throws ServletException {

  this.filterConfig = filterConfig;
  this.encoding = filterConfig.getInitParameter("encoding");// /得到在web.xml中配置的编码
 }

 protected String getEncoding() {

  return (this.encoding);// /得到指定的编码

 }

}
二、修改web.xml,添加:
<filter>
  <filter-name>SetCharacterEncoding</filter-name>
  <filter-class>com.suzhou.util.SetCharacterEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>GBK</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>SetCharacterEncoding</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
三、进入http://localhost:port/admin,选择Tomcat server/Service/Connector(port),把URI Encoding改成UTF-8,Use Body Encoding For URI Query Parameters:设置为true,点保存然后重新启动Tomcat即可。
记住,每个jsp页面的编码都为:
<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage="" %>

这样子不但能彻底解决中文参数问题(如http://menglikn:4000/suzhou/getMap.do?ditu=市区图),而且还能解决中文URL问题(如http://menglikun:4000/suzhou/空白页.html)

posted @ 2006-11-10 19:26 Kevin Meng 阅读(523) | 评论 (0)编辑 收藏

开发环境:
window xp
jdk 1.5
tomcat 5.028
eclispe 3.2
myeclipse 4.0
步骤:
(1)新建一个web project,名称为suzhouadmin
(2)在项目上点鼠标右键,选择myeclipse->add spring capablities...
(3)把Spring 1.2 AOP,Spring 1.2 Core Lib,Spring ORM/DAO/Hibernate 3.0 lib,Spring 1.2 web lib选择中,Copy Checked lib content to project folder,然后点Next
(4)folder改为:WebRoot/WEB-INF,File为applicationContext.xml不变。点Finish。
Spring的引用完成。

(5)在项目上点鼠标右键,选择myeclipse->add Struts capablities...
(6)选择struts1.1,base package for classes 改成 com.suzhou.admin.struts,然后点finish。

Struts的引用完成。
(6)新建立一个包com.suzhou.admin.hibernate,然后在项目上点鼠标右键,选择myeclipse->add Hibernate capablities...
(7)把Hibernate 3.0 core lib,Hibernate 3.0 advanced lib中,Copy Checked lib content to project folder,点Next
(8)选择Spring Configuration file(applicationContext.xml),点Next
(9)选择Exit spring configuration file.输入sessionFactory id为sessionFactory。点Next
(10)设置数据源ID为dataSource,选择一个已经设置好的DB profile,然后点Next
(11)点Package...选择com.suzhou.admin.hibernate,自动生成类名com.suzhou.admin.hibernate.HibernateSessionFactory。

开始配置Struts和Spring.
(12)打开WEB-INFO/web.xml,在最后面添加:
 <servlet>
  <servlet-name>context</servlet-name>
  <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
这样,Spring 的ApplicationContext就配置好了。通过以上配置,Web容器会自动加载/WEB-INF/applicationContext.xml初始化
ApplicationContext实例,如果需要指定配置文件位置,可通过context-param加以指定:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/myApplicationContext.xml</param-value>
</context-param>
配置完成之后,即可通过
WebApplicationContextUtils.getWebApplicationContext()
方法在Web应用中获取ApplicationContext引用。

(13)通过Struts config新建一个Action名为LoginAction,自动生成的action定义如下:
    <action
      attribute="loginForm"
      input="/index.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      type="com.suzhou.admin.struts.action.LoginAction">
      <forward name="loginfail" path="/error.jsp" />
      <forward name="loginok" path="/main.jsp" />
    </action>
把其改成:
    <action
      attribute="loginForm"
      input="/index.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      type="org.springframework.web.struts.DelegatingActionProxy">
      <forward name="loginfail" path="/error.jsp" />
      <forward name="loginok" path="/main.jsp" />
    </action>
并在struts-config.xml中添加Spring插件。
 <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
  <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
 </plug-in>
(13)用Myeclipse Spring donfig editor打开applicationContext.xml,点右键,选择new Bean,输入Bean name为/login,calss为com.suzhou.admin.struts.action.LoginAction。点finish,applicationContext.xml多加了一个Bean定义:
<bean name="/login" class="com.suzhou.admin.struts.action.LoginAction" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default"></bean>

posted @ 2006-10-25 13:36 Kevin Meng 阅读(947) | 评论 (0)编辑 收藏

(1)安装文件必须放在英文目录下,且文件夹名不能带空格,否则会出现找不到文件的错误。
(2)如果安装不成功,必须重新安装时,最好把所有已经安装的oracle服务删除。删除步骤是。
a.进入DOC
b.进入C:\WINDOWS\system32
c.运行sc delete OracleServiceName
(3)如果系统安装有放火墙,最好先把其关闭。安装完oracle后再重新开启。

posted @ 2006-10-19 09:29 Kevin Meng 阅读(269) | 评论 (0)编辑 收藏

开发环境:
jdk 1.5
tomcat 5.0.28
oracle 9i

(1)在浏览器中输入http://localhost:8181/admin/,登陆tomcat管理系统
(2)选择Tomcat server->service->Host->Context(/yourproject)->Resource->Data Source
(3)在下拉列表中选择Create new DataSource
JNDI Name:jdbc/yourDatasourceName
Data Source URL:jdbc:oracle:thin:@menglikunm:1521:ora
JDBC Driver:oracle.jdbc.driver.OracleDriver
UserName:username
Password:password
Max. Active Connections:2000(自己定)
2
(自己定)
(4)把oracle 的class12.jar拷贝到tomcat的common/lib目录下(不要忘记这一步哦)
(5)重新启动Tomcat
(6)测试,代码如下:
Connection con = null;
  try{
   Context ctx=new InitialContext();
   DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/ora_menglikunm");
   con=ds.getConnection();
  }catch(Exception ex){
   ex.printStackTrace();
  }

(7)加班作吧!!!!:)

posted @ 2006-09-22 10:36 Kevin Meng 阅读(404) | 评论 (0)编辑 收藏

在数据库开发中,打开数据库连接是很慢的。怎样oracle当前的连接数呢?只需要用下面的SQL语句查询一下就可以了。
select * from v$session where username is not null

查看不同用户的连接数
select username,count(username) from v$session where username is not null group by username

posted @ 2006-09-21 17:18 Kevin Meng 阅读(6206) | 评论 (0)编辑 收藏

仅列出标题
共12页: First 上一页 2 3 4 5 6 7 8 9 10 下一页 Last