随笔-5  评论-0  文章-0  trackbacks-0
  2008年8月27日
        全景图技术的应用越来越广,现在已应用到很多领域,它是通过数张不同角度拍摄的图片(必须得有重叠)来经过提取控制点、拼合、优化处理、缝合等复杂的算法,结合用户鼠标、键盘等交互来达到模拟3D场景的效果。对比普通的平面照片,可以达到更好的演示效果。全景图虚拟现实是一门比较新潮的应用。
       现在有很多制作全景图的软件。这只是软件的实现,如果我们想通过程序来实现,应该怎样实现呢?大家可以跟踪软件制作全景图的步骤,会发现大概就三个步骤:
       第一步:我们首先提取出有重叠图片的控制点,也就是控制点,这个控制点的提取是根据一定的算法的。以下是我提取过的部分控制点的截图. 
      
          第二步:拼合和优化这些控制点,优化结果如下。
      
      第三步:就是缝合这些图片并消除拼接处的花边,生成一张全景图图片。
    以下是我测试的效果:
    以下是不同角度拍摄的18张照片:
  
      经过上面的三个步骤会制作成一张全景图效果如下:
     
     制作全景图的思路就是这些了,至于具体的实现就是上面说的那几个步骤。要用到很多的知识和工具,有兴趣的可以和我交流。
posted @ 2008-08-27 10:27 魏杰 阅读(268) | 评论 (0)编辑 收藏
  2008年8月7日
1Struts应用框架介绍
1)框架
框架最简单的形式是指已开发过并已测试过的软件的程序块,这些程序块可以在多个软件开发工程中重用。框架提供了一个概括的体系结构模版,可以用这个模板来构建特定领域中的应用程序。
Framework概念并不是很新了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。这意味着人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。
于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。这也就是我们所说的FrameworkFramework的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个framework开发上的结构。
2为什么会出现应用框架
您只要细心地研究真实的应用程序,就会发现程序大致上由两类性质不同的组件组成,一类与程序要处理的具体事务密切相关,我们不妨把它们叫做业务组件;另一类是应用服务。
比如说:一个税务征管系统和一个图书管理系统会在处理它们的业务方面存在很大的差异,这些直接处理业务的组件由于业务性质的不同不大可能在不同的系统中重用,而另一些组件如决定程序流向的控制、输入的校验、错误处理及标签库等这些只与程序相关的组件在不同的系统中可以很好地得到重用。
人们自然会想要是把这些在不同应用程序中有共性的一些东西抽取出来,做成一个半成品程序,这样的半成品就是所谓的程序框架,再做一个新的东西时就不必白手起家,而是可以在这个基础上开始搭建。实际上,有些大型软件企业选择自己搭建这样的框架。
3)为什么要用框架?
因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。
3Struts Web应用框架
Struts Apache 软件基金会(Apache Software Foundation)资助的一个为开发基于MVC模式应用架构的开源框架,是利用Java ServletJSPXML等方面的技术来实现构建Web应用的一项非常有用的技术,它也是基于MVC模式的Web应用最经典框架。
Struts框架的主要架构设计和开发者是Craig R.McClanahanStruts 是目前Java Web MVC框架中不争的王者。经过长达五年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。
StrutsServletJSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,主要由一系列的框架类、辅助类和定制的JSP标记库构成。开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间。
 
 
2、框架的组成
一个设计良好的框架一般分为三层:
1)接口层
这一层要尽量使用interface,在这一层中你要考虑到你现在的、将来的可能支持的功能,但不需要去实现它,只定义到接口层次就可以了。如Struts中的插件接口PlugIn
2)抽象层
这一层要针对你当前的需求做定制,对你的需求中的通用逻辑做实现。这一层应该出现大量的抽象类。如Struts中的ActionServletActionActionForm等类。
3)实现层
不用说了,把前面两层没有做掉的事情在这一层都做了吧。如Struts中后台实现的各种功能
3、为什么要提出Struts
1)背景
由于我们开发Web应用的复杂度随着系统的复杂度的要求越来越来复杂。特别是在代码重用,代码移植、代马可插扒等问题上出现了许多重复开发、维护困难等。从而提出了Struts开发框架。它的设计目的是从整体上减轻构造企业Web应用的负担,并提供国际化和数据库连接池支持。
Struts 是一组相互协作的类、servlet JSP 标记,它们组成一个可重用的 MVC 2 设计。这个定义表示 Struts 是一个框架,而不是一个库,但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。
 
2)采用Struts的优点
在实际开发中,MVC框架开发相当费时,Struts 实现了MVC这种框架,但又扩充了该MVC框架。这样使得系统的开发就像“填空”一样进行,相当快速。
l 采用Strust可以加快开发速度、增强系统的灵活性、降低系统的藕合性( 分工明确:业务层与表示层分开,使得管理人员可以在小组内分配责任。网页设计人员与JAVA程序员各司其职。
l 简化页面:使用标记,把逻辑处理的代码分离开来。
l 通过将问题划分为更小的组件,当技术空间或问题空间中出现变化时,您就有更多的机会重用代码。
3Struts的缺点
l 有限的适用范围:Struts 是一种基于 Web MVC 解决方案,所以必须用 HTMLJSP 文件和 Servlet 来实现它。
l J2EE 应用程序支持
l 复杂性:在将问题分为几个部分的同时也引入了复杂性(在强健性增强的同时,也意味着复杂性的增加)。
4Struts压缩包内容
下载后的*.zip包文件包含两个目录,libwebapps。在lib目录中有使用struts创建应用程序是所需的文件:
文件
描述
jdbc2_0-stdext.jar
包含JDBC2.0 Optional Package API类。如果我们要使用struts提供的数据资源,就需要将这个文件拷贝到WEB-INF\lib
Struts.jar
包含struts中所有的java类。同样也需要拷贝到WEB-INF\lib
*.tld
标记库描述器文件,描述了多个struts标记库中的自定义标记。同样要拷贝到WEB-INF\lib
webapps目录下有如下文件:
Web应用程序
描述
Struts-blank.war
一个简单的web应用程序
Struts-documentation.war
包含struts站点上所有struts文档
Struts-example.war
Struts很多特性的示范
Struts-exercisetaglib.war
主要用于对自定义标签库进行增加而使用的测试页,但也可以示范如何使用struts标记
Struts-template.war
包含struts模板标记的介绍和范例
Struts-upload.war
一个简单的例子,示范如何使用struts框架上传文件
 
5Struts的整体框架
1Struts框架的MVC组件结构图
struts框架中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ActinForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。
大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。
小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。
StrutsModel部分提供了ActionActionForm两种Bean对象:所有的Action处理器对象都是开发者从StrutsAction类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。
Struts提供的ActionForm组件对象,它可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和Struts提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action处理器对象可以直接对它进行读写,而不再需要和requestresponse对象进行数据交互。
2Struts框架的处理流程
 
 
首先,控制器(ActionServlet)进行初始化工作,读取配置文件(struts-config.xml),为不同的Struts模块初始化相应的ModuleConfig对象。比如配置文件中的Action映射定义都保存在ActionConfig集合中。相应地有ControlConfig集合、FormBeanConfig集合、ForwardConfig集合和MessageResourcesConfig集合等。
l Struts框架的处理流程清楚的体现了MVC系统的特点,所有的页面请求都将发送到Struts的前端控制器ActionServlet中(因此如果要进行前置处理,可以继承ActionServlet并重写process()方法),同时ActionServlet也将根据struts-config.xml配置文件中的设置(<action>标签)来决定转向到那个后端控制器Action类。
l 当页面中的Form表单被提交时,ActionForm将自动地封装和处理该Form表单中的数据。同时在Action的子类中可以存取存储在ActionForm中的Form表单数据。
l Action的子类将处理所获得的存储在ActionForm中的Form表单数据,处理和响应客户请求,它还调用后台的JavaBean组件完成具体的业务逻辑。同时也按照在struts-config.xml文件内的forward标签内容(如<forward name="sayHello" path="/sayHello.jsp"/>),将结果交由某个JSP页面显示。
3Struts体系组成
       Struts体系可以看成两个相对独立的部分:
第一个部分是Struts API,用于编写支持Struts的应用组件;
第二部分是StrutsJSP标记库,由htmlbeanlogictemplate四个标记组成。
Struts的两个部分有着各自不同的用户。对于规模较小的项目,同一个用户可能同时使用这两个部分;但对于规模较大的项目,通常开发者使用API组件,而负责HTML页面布局的人使用标记库。
4struts-config.xml配置文件
框架中的模型(M)、视图(V)、控制器(C) 三个部分是通过struts-config.xml配置文件将其联系在一起。一个标准的struts-config文件包含如下结构,有一点要引起大家的注意的,就是,struts-config.xml中配置的各个项目是有一定的顺序要求的,几个主要项目的顺序大致是这样的:
?xml version="1.0" encoding="UTF-8"?
!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
注意:各个标签项目是有一定的顺序要求的
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd
struts-config
data-sources / // 定义数据源
form-beans / // 定义ActionForm
global-exceptions / // 定义全局异常
global-forwards / // 定义全局转向url
action-mappings / // 定义action
controller / // 配置Controller
message-resources / // 配置资源文件
plug-in / // 配置资源文件
/struts-config
5Struts与其它框架的不同
       Struts应用中,有一个称为ActionServlet的主调度程序(或称为分配器)。不过,并非所有的请求都必须通过ActionServlet(以“*.do”结尾的URL都是Struts请求)。用户的请求目标可以是非Struts的页面,也可以是那些使用了Struts标记库但不使用Struts请求分配服务的页面。这正是Struts体系的优点之一:按需使用。许多编程框架要求你要么不用,要么全部使用,而且一旦你决定使用,以后要悔改从前的错误就会付出高昂的代价。Struts按需使用的优点与这类系统形成了强烈对比。
posted @ 2008-08-07 20:45 魏杰 阅读(541) | 评论 (0)编辑 收藏
     我是在weblogic9.0+mysql5.1的环境下配置的数据源。其实在tomcat,jboss,websphere等服务器中都提供了配置数据源的功能,大概的配置都很类似。
     简单的讲述一下我的配置,以及应该注意的地方。
     第一步:我们首先要下载一个mysql驱动,必须与你的mysql版本兼容的,我使用的是mysql-connector-java-5.0.7-bin.jar。自己可以到网上去下载与你Mysql版本兼容的驱动。这一步应该很简单的,就不多说了。
    第二步:就是把我们的mysql驱动添加到你的classpath中,在weblogic中有很多配置方法:(weblogic安装在E:\bea下)
 <1>.就是把它放到你的E:\bea\weblogic90\common\lib下面,我们在打开E:\bea\weblogic90\common\bin文件下的commEnv.cmd文件。找到下面这个位置:
@rem set up WebLogic Server's class path
set WEBLOGIC_CLASSPATH=%PATCH_CLASSPATH%;%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\weblogic_sp.jar;%WL_HOME%\server\lib\weblogic.jar;%WL_HOME%\common\lib\mysql-connector-java-5.0.7-bin.jar
在最后面加上mysql-connector-java-5.0.7-bin.jar驱动的位置,其中WL_HOME=E:\bea\weblogic90,上面红色的部分就是新加上的。
<2>.也可以在E:\bea\user_projects\domains\mydomain\bin下面的setDomainEnv.cmd文件中配置。在最后面的位置上找到:set CLASSPATH=%PRE_CLASSPATH%;%WEBLOGIC_CLASSPATH%;%POST_CLASSPATH%;%WLP_POST_CLASSPATH%;%WL_HOME%\integration\lib\util.jar;%WL_HOME%\common\lib\mysql-connector-java-5.0.7-bin.jar
在最后面加上mysql-connector-java-5.0.7-bin.jar驱动的位置,其中WL_HOME=E:\bea\weblogic90,上面红色的部分就是新加上的。
<3>.我们也可以把mysql-connector-java-5.0.7-bin.jar放到E:\bea\user_projects\domains\mydomain\lib目录下,然后再E:\bea\user_projects\domains\mydomain\bin下面的setDomainEnv.cmd文件中配置。在最后面的位置上找到:set CLASSPATH=%PRE_CLASSPATH%;%WEBLOGIC_CLASSPATH%;%POST_CLASSPATH%;%WLP_POST_CLASSPATH%;%WL_HOME%\integration\lib\util.jar;%DOMAIN_HOME%\lib\mysql-connector-java-5.0.7-bin.jar
在最后面加上mysql-connector-java-5.0.7-bin.jar驱动的位置,其中DOMAIN_HOME=E:\bea\user_projects\domains\mydomain,上面红色的部分就是新加上的。
<4>我们也可以直接在电脑的环境变量里的classpath中加上mysql驱动的路径。不提倡这样做。
    从上面我们可以看出无论mysql-connector-java-5.0.7-bin.jar放在那都无所谓,关键的是最后要把它的路径设置在classpath中就可以了。可以在E:\bea\weblogic90\common\bin\commEnv.cmd中配置,也可以在E:\bea\user_projects\domains\mydomain\bin\setDomainEnv.cmd中配置。也可以直接在电脑的环境变量中直接设置。
 第三步:就是在weblogic中建数据源了。启动weblogic服务器,如果我们配置正确的话,我们可以在启动时的命令控制台上看到最后面mysql-connector-java-5.0.7-bin.jar的信息。
 
在打开http://localhost:7001/console进入控制台。点击Data Sources:如下图。
 然后再点击New。如下图。
然后填写如下信息:
 
继续Next在填写如下的信息。
 
继承Next,最后点击Test Configuration测试,当出现如下信息时,表明配置成功。
 
  最后一定要对你的新建的数据源,进行激活他,点击Active Changes:
     这一点一定要注意激活,激活成功以后,会在E:\bea\user_projects\domains\mydomain\config\jdbc下面生成一个blogDB-2272-jdbc.xml文件。该文件中主要配置了数据源:
<?xml version='1.0' encoding='UTF-8'?>
<jdbc-data-source xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xsi:schemaLocation="http://www.bea.com/ns/weblogic/90/domain.xsd">
  <name>blogDB</name>
  <jdbc-driver-params>
    <url>jdbc:mysql://127.0.0.1:3306/blog</url>
    <driver-name>com.mysql.jdbc.Driver</driver-name>
    <properties>
      <property>
        <name>user</name>
        <value>root</value>
      </property>
    </properties>
    <password-encrypted>{3DES}z0eG+kCsizA=</password-encrypted>
  </jdbc-driver-params>
  <jdbc-connection-pool-params>
    <test-table-name>SQL SELECT 1</test-table-name>
  </jdbc-connection-pool-params>
  <jdbc-data-source-params>
    <jndi-name>blogDB</jndi-name>
    <global-transactions-protocol>OnePhaseCommit</global-transactions-protocol>
  </jdbc-data-source-params>
</jdbc-data-source>
 
同时在E:\bea\user_projects\domains\mydomain\config下面的config.xml文件中自动加上数据源的配置信息如下:
 
 <jdbc-system-resource>
    <name>blogDB</name>
    <target>AdminServer</target>
    <descriptor-file-name>jdbc/blogDB-2272-jdbc.xml</descriptor-file-name>
  </jdbc-system-resource>
   这表明配置成功了。
 
   最后一步:我们写个简单的测试程序,测试一下(index.jsp位于工程目录下):
 
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>My JSP 'index.jsp' starting page</title>
 </head>
 <body>
  This is my JSP page.
  <br>
  <%
   InitialContext ctx = new InitialContext();
   DataSource ds = (DataSource) ctx.lookup("blogDB");
   Connection conn = ds.getConnection();
   Statement sm = conn.createStatement();
   ResultSet rs = sm.executeQuery("select * from bloginfo");
   while (rs.next()) {
    System.out.println("userId:"+rs.getString(1));//用户id
    System.out.println("userName:"+rs.getString(2));//用户名
   }
   sm.close();
   rs.close();
   conn.close();
  %>
 </body>
</html>
 
  最后重启一下服务器:访问http://localhost:7001/WeblogicDemo/index.jsp如果看到输出信息,表明成功:
 
      希望对weblogic有爱好的朋友,有所帮助,不明白的地方可以直接回复。一定解答。
posted @ 2008-08-07 20:39 魏杰 阅读(1109) | 评论 (0)编辑 收藏
weblogic简介
      BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应 用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
  BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。 与BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可为部署适应性个性化电子商务应用系统提供完善的解决方案。
配置weblogic域(版本为9.x,安装目录为E:\bea)
①运行开始 -> 程序 -> BEA Products -> Tools -> Configuration Wizard。
②选择 Create a new WebLogic domain,Next。
③在 Select Domain Source 界面保持默认,Next。
④在 User name 处输入用户名,默认为weblogic,两个 password 都输入 12345678(密码要求 8 位),Next。
⑤ 在 Configure Server Start Mode and JDK 界面中保持默认,即 JDK 选择的是“Sun SDK 1.5.0_03 @ E:\bea\jdk150_03”,注意这里若选择“Other JDK”配置比 SDK 1.5.0_03 更高的版本,服务器启动时将会出现异常,所以最好保持默认,然后 Next。
⑥在 Customize Environment and Services Settings 界面中默认为 No,Next。
⑦在 Domain name 处输入 mydomain,点击 Create。
⑧完成后点击 Done 关闭 Configuration Wizard 对话框。
⑨ 运行开始 -> 程序 -> BEA Products -> User Projects -> mydomain -> Start Admin Server for Weblogic Server Domain,检查服务器是否启动成功。http://localhost:7001/console
 
在Eclipse3.3(MyEclipse6.0.1)中配置weblogic9.x服务器。
启 动 Eclipse,选择“Window -> Preferences”菜单,打开首选项对话框。展开 MyEclipse 下的Servers 节点,再展开 WebLogic节点,点击WebLogic 9.x ,选中右边的 Enable 单选按钮,启用 WebLogic 服务器。配置如下:
①BEA home directory:E:\bea(WebLogic 的安装目录)
②WebLogic installation directory:E:\bea\weblogic90
③Admin username:weblogic(来自 WebLogic 中的配置)
④Admin password:12345678(来自 WebLogic 中的配置)
⑤Execution domain root:E:\bea\user_projects\domains\mydomain
⑥Execution server name:AdminServer
⑦Security policy file:E:\bea\weblogic90\server\lib\weblogic.policy
⑧JAAS login configuration file:(Null)
在配置jdk点击WebLogic 9.x 目录下的JDK,这里的JDK最好用weblogic自带的JDK,要不然可能会出现下面的异常信息:
weblogic.management.ManagementException: Parsing Failure: javax.xml.namespace.QName; local class incompatible: stream classdesc serialVersionUID = 4418622981026545151, local class serialVersionUID = -9120448754896609940
 at weblogic.management.provider.internal.RuntimeAccessImpl.<init>(RuntimeAccessImpl.java:131)
 
   这一点一定要注意。
新建一个web项目(WeblogicDemo)目录如下:
  index.jsp文件中就是默认的一句话:This is my JSP page.
 
在weblogic中部署web项目,并启动服务器,当在控制台看到如下信息时表示部署成功。
<2008-7-31 上午10时24分26秒 CST> <Info> <WebLogicServer> <BEA-000377> <Starting WebLogic Server with Java HotSpot(TM) Client VM Version 1.5.0_03-b07 from Sun Microsystems Inc.>
......

<2008-7-31 上午10时24分45秒 CST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
 
 这时我们访问http://127.0.0.1:7001/WeblogicDemo/可能会出现401无法访问的错误。
 
 这时我们并没有部署完,运行开始 -> 程序 -> BEA Products -> User Projects -> mydomain -> Admin Server Console,也可以直接访问http://localhost:7001/console。用你刚刚建立weblogic域时填写的用户名(weblogic)和密码(12345678)登录控制台。进入控制台以后在左边的导航栏有个Domain Structure(域结构),我安装的是英文版本的。在该目录下点击部署(Deployments)。首先要激活“锁定并编辑”(Lock&Edit).然后点击安装(Install)按钮,按照提示找到刚刚我们建立项目所在的根目录(/WelogicDemo).最后会出现如下界面。这时并没有完全安装完,这时选中WeblogicDemo前面的复选框,然后点击(启动)Star按钮。这时后面的状态为激活状态时(active),表明启动成功。
    最后在注意一点,一定要激活我们的更改,就是原来那个锁定并编辑按钮,这是我们的配置才会生效,如果你没有激活的话可能会出现503的无权访问的错误。
    这时会在E:\bea\user_projects\domains\mydomain\config下面的config.xml中生成我们刚刚部署的项目描述:
  <app-deployment>
    <name>WeblogicDemo</name>
    <target>AdminServer</target>
    <module-type>war</module-type>
    <source-path>E:\WeblogicDemo</source-path>
    <security-dd-model>DDOnly</security-dd-model>
  </app-deployment>
 表明配置成功。
    重启一下服务器,再次访问可能还会有下面这样的错,
Expected   elements   'servlet-class@http://java.sun.com/xml/ns/j2ee   jsp-file@http://java.sun.com/xml/ns/j2ee '
就是web.xml中的javaee版本原因,现在9.x的版本支持到javaee2.4的版本,最简单的解决方法就是把这些文件类型定义,命名空间,版本信息都删除,只剩下如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
 这样就不会报错了。但这不是最好的解决办法,或者用version="2.4" 的也行。这时在访问http://127.0.0.1:7001/WeblogicDemo/就会看到如下成功页面的信息了:
This is my JSP page.

 
weblogic的默认端口是7001,如果想改端口的话在config.xml文件中的添加<listen-port>80</listen-port>。位置如下:
<server>
       <name>AdminServer</name>
       <listen-port>80</listen-port>
       <listen-address></listen-address>
 </server>
 
     一般在weblogic中部署web项目就这几个错误,只要大家记好了,以后应该不会出现这些问题了。
      希望对weblogic有爱好的朋友有点帮助。
posted @ 2008-08-07 20:36 魏杰 阅读(9210) | 评论 (0)编辑 收藏
      如何增强你网站中地址的可读性和让搜索引擎快速的收录到你的站点,这就需要你美化你的网页的地址,也就是我们常说的Url重写技术,大家熟悉的可能有很多服务器都提供Url重写的技术,以前我们用的最多的就是Apache,Jboss这样一些服务器自带的一些Url重写,但是他们的配置比较麻烦,性能又不是太好,现在我们有专一的开源框架来完成Url重写任务,今天我要介绍的就是UrlRewriter。使用起来比较简单,配置是相当的简单明了。
     我们先简单的了解一下使用Url重写能给你网站带来哪些好处。
    第一:有利于搜索引擎的抓取,因为现在大部分的搜索引擎对动态页面的抓取还比较弱,它们更喜欢抓取一些静态的页面。而我们现在的页面大部分的数据都是动态的显示的。这就需要我们把动态页面变成静态的页面,有利于搜索引擎的抓取。
   第二:让用户更容易理解,很少有用户去关心你网站的页面的地址,但对一般的大中型网站增强可读性还是必须的。这样会让你的网站更加完美。
  第三:隐藏技术的实现,我们可以通过Url重写可以实现技术的隐藏。不至于暴露你所采用的技术,给一些想攻击你网站的爱好者提供方便。
  第四:可以很方便的重用,提高网站的移植性。如果我们后台方法改动的话,可以保证前台的页面部分不用改。这样就提高了网站的移植性。
   它虽然有这么多的优点,但是也有一点缺点的,因为它是通过过滤器原理来实现的,就以为着又多了一道访问,会多少影响点访问速度的,这个可以忽略不计的。
   现在UrlRewriter技术有两个技术平台的,一个就是在Java方向的,另一个就是.NET方向的。今天我们讲的是Java方向的应用。
   首先让我们了解它的工作原理,说白了它就是一个简单的过滤器(Filter) ,看看源码你就会很快的明白,它就是通过我们在jsp中常用的两个方法实现的forward(),sendRedirect().
   下面我们就快速的为你的网站搭建Url重写技术。
    第一步:下载urlrewrite-2.6.0.现在最新版本是3.1的。(http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip
http://urlrewritefilter.googlecode.com/files/urlrewritefilter-3.1.0.zip把urlrewrite-2.6.0.jar拷到classpath下。
   第二步:在WEB-INF目录下建一个urlrewrite.xml文件。
   第三步:在web.xml中初始化。加上下面的代码:
   <!-- Set URL Rewrite-->
 <filter>
  <filter-name>UrlRewriteFilter</filter-name>
  <filter-class>
   org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
  </filter-class>
 </filter>
 <filter-mapping>
  <filter-name>UrlRewriteFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
    最后我要简单的讲一下常用的两个配置规则.以下就是简单的urlrewrite.xml配置片段。不要习惯Java的命名法把它写成urlRewrite.xml,这样即使你加上
<init-param>
   <param-name>confPath</param-name>
   <param-value>/WEB-INF/urlRewrite.xml</param-value>
 </init-param>
  在启动的服务器的时候还是会报错的,因为源码中必须是全小写的(urlrewrite.xml)且只能放到WEB-INF下面。
     <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
        "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
<urlrewrite>
  <rule>
  <from>^/(\w+)/(\w+)/page_(\d+)\.html$</from>
  <to type="forward">/$1.htm?category=$2&amp;page=$3</to>
 </rule>
  <rule>
     <from>^/rss/yahoo\.html$</from>
       <to type="redirect">    http://add.my.yahoo.com/rss? url=http://feed.feedsky.com/W3CSSiteFeed
      </to>
 </rule>
</urlrewrite>
   所有的规则配置都写在这里。第一个常用个规则就是站内的简单重写。
<rule>
  <from></from>
  <to type="forward></to>
</rule>
  <from></from>写上你自己定义的访问地址,<to type="forward></to>就是实际的访问地址。比如我们实际的访问地址是:http://yousite.com/entity.htm ?category=user&page=2.而我们想把它重写为http://yousite.com/entity/uesr/page_2.html。这样看起来比我们实际的要好看的多。我们就应该这样的写:  
<rule>
  <from>^/(\w+)/(\w+)/page_(\d+)\.html$</from>
  <to type="forward">/$1.htm?category=$2&amp;page=$3</to>
 </rule>
   简单的介绍一下常用的正规表示式:
 
代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
常用的&要用  &amp;来表示。$1,$2代表与你配置正规表达式/(\w+)/(\w+)/相对应的参数。<to type="forward">默认的是 type="forward".
  另一个常用的规则就是连接外部的网站。就要用到。<to type="redirect">
 <rule>
     <from>^/rss/yahoo\.html$</from>
       <to type="redirect">    http://add.my.yahoo.com/rss? url=http://feed.feedsky.com/MySiteFeed
      </to>
 </rule>
   我们的网站用到最多的无非就这两种规则。至于正规表达式的写法很多种。希望对有感兴趣的朋友,可以试试。
posted @ 2008-08-07 20:34 魏杰 阅读(615) | 评论 (0)编辑 收藏
仅列出标题