Smart2.0开发指南——入门

原创
2014/01/22 11:13
阅读数 2.2K

说明:本文为《Smart2.0开发指南》系类文章

第一步:创建一个基于Servlet3.0的Maven Webapp工程

   打开Eclipse,点击File>New>Maven Project 选择项目保存位置,默认为Workspace目录,点击Next, Archetype选择maven-archetype-webapp,点击Next,填写项目信息如图2-1,点击Finish完成创建。

标准的Maven Webapp目录结构如下:

--src
  |--main
    |--java
    |--resources
    |--webapp
  |--test
    |--java
    |--resources

而这里使用Eclipse 的Maven插件创建的目录并不完整,需要我们手动创建src/main/java、src/test/java、src/test/resources三个目录,创建后的项目目录结构如图2-2。

 

   这里Maven Webapp的Webapp版本为2.3,也就是Servlet2.3,由于Smart 是基于Servlet3.0的,所以需要将Webapp的版本改为3.0。在workspace中找到HelloSmart项目,用文本编辑器打开HelloSmart/.settings/org.eclipse.wst.common.project.facet.core.xml ,将<installed facet="java" version="1.5"/> 、<installed facet="jst.web" version="2.3"/>改为<installed facet="java" version="1.7"/> 、<installed facet="jst.web" version="3.0"/>。然后删掉src/main/webapp/WEB-INF/web.xml文件,或将其内容改为如下代码:

  <?xml version="1.0" encoding="UTF-8"?>
  <web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
           http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">
    <display-name>HelloSmart</display-name>
  </web-app>

在Eclipse中打开项目的pom.xml文件,在<build>节点下添加如下配置:

  <plugins>
  	   <plugin>
  	    <artifactId>maven-compiler-plugin</artifactId>
  	    <version>3.0</version>
  	    <configuration>
  	     <source>1.7</source>
  	     <target>1.7</target>
  	    </configuration>
  	   </plugin>
  </plugins>
选择HelloSmart项目,右键选择Maven>Update Project更新项目,到这里,一个基于Servlet3.0的Manve Webapp创建完成。

第二步:引入Smart Framework支持

  我们是基于Smart Framework开发应用,那么这里就需要引入Smart Framework的支持了。因为使用Maven构建项目,那么Maven会根据pom.xml文件自动下载Smart 的JAR包,而这里我们只需要在pom中添加相应的依赖配置即可。依赖配置如下:

    <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <smart.version>2.0</smart.version>
    </properties>
    <dependencies>
      	<!-- JUnit -->
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.11</version>
              <scope>test</scope>
          </dependency>
          <!-- Servlet -->
          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>javax.servlet-api</artifactId>
              <version>3.0.1</version>
              <scope>provided</scope>
          </dependency>
           <!-- JSTL -->
          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>jstl</artifactId>
              <version>1.2</version>
              <scope>runtime</scope>
          </dependency>
           <!-- MySQL -->
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.25</version>
              <scope>runtime</scope>
          </dependency>
          <!-- Smart -->
          <dependency>
              <groupId>com.smart</groupId>
              <artifactId>smart-framework</artifactId>
              <version>${smart.version}</version>
          </dependency>
    </dependencies>

  接下来需要添加Smart的配置文件,在src/main/resources下创建config.properties,文件中添加如下配置内容:

  #应用名称
  app.name=HelloSmart
  app.package=com.smart.app.hellosmart
  #项目静态资源目录
  app.www_path=/www/
  #jsp文件目录
  app.jsp_path=/WEB-INF/jsp/
  #应用首页
  app.home_page=/index
  
  jdbc.driver=com.mysql.jdbc.Driver
  jdbc.url=jdbc:mysql://localhost:3306/smart
  jdbc.username=root
  jdbc.password=root
  jdbc.max.active=10
  jdbc.max.idle=10
  #i启用18n,这里暂不开启
  i18n.reloadable=false


  最后还需要配置log4j,在src/main/resources下创建log4j.properties,文件中添加如下配置内容:

  log4j.rootLogger=INFO,console,file
  
  log4j.appender.console=org.apache.log4j.ConsoleAppender
  log4j.appender.console.Target=System.out
  log4j.appender.console.layout=org.apache.log4j.PatternLayout
  log4j.appender.console.layout.ConversionPattern=%m%n
  
  log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
  log4j.appender.file.File=${catalina.base}/logs/smart-bootstrap/log
  log4j.appender.file.DatePattern='_'yyyyMMdd
  log4j.appender.file.encoding=UTF-8
  log4j.appender.file.layout=org.apache.log4j.PatternLayout
  log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss,SSS} %p %c (%L) - %m%n
  
  log4j.logger.com.smart.framework=DEBUG
  log4j.logger.com.smart.plugin=DEBUG
  log4j.logger.com.smart.sample=DEBUG

  以上是Smart的最简单的配置。

第三步:编写代码让Smart飞一会

     首先创建一个欢迎页面,在app.jsp_path即 /WEB-INF/jsp/ 目录下创建一个名为index.jsp的文件,在页面输出一个“Hello Smart!”问候语。为该内容区域注册一个点击事件,当点击该区域后请求/hello资源,并将当前时间做为一个参数发送给Action处理。Index.jsp代码如下:

  <body>
  	<div id="content" >
  		  Hello Smart!
  	</div>
  <script type="text/javascript">
  	var content =  document.getElementById("content");
  	content.addEventListener("click",function (){
  		var date = new Date().getTime();
  		window.location.href = "<%=request.getContextPath()%>/hello?date=" +date;
  	} , false);
  </script>
  </body>

页面效果如图2-3。

  接下来编写一个Action处理来自HTTP GET的请求/hello,在src/main/java/ 创建com.smart.app.hellosmart.action包,然后创建一个名为HelloSmartAction的类,在类上使用 @action 注解标识该类为Action,然后创建一个prcoessHello()方法,处理/hello请求,最后将date参数格式化后返回给hello.jsp页面。HelloSmartAction.java 代码如下:

  @Action
  public class HelloSmartAction {
  	//请求映射,处理使用GET方法提交的 /hello 请求
  	@Request("GET:/hello") 
  	public Page prcoessHello(Map<String, Object> fieldMap){
  		//fieldMap中取出 date 参数,并使用框架提供的 CastUtil 将其转换为Long类型
  		Long date =  CastUtil.castLong(fieldMap.get("date"));
  		//使用框架的DateUtil格式化日期
  		String dateStr = DateUtil.formatDatetime(date);
  		//将处理结果返回到hello.jsp 页面,并携带名为message的数据
  		return new Page("hello.jsp").data("message", "GET:/hello " + dateStr);
  	}
  }

  在jsp目录下创建hello.jsp如下:

<body>
  	<div id="content">
  		 <%=request.getAttribute("message") %>
  	</div>
  </body>

  页面显示如图2-4。

  编写完以上代码后,将应用部署到Tomcat7中,启动Tomcat,访问http://localhost:8080/HelloSmart/ ,将会看到图2-3的页面,点击“Hello Smart”,将请求http://loalhost:8080/HelloSmart/hello,服务器响应如图2-4页面。
  一个最简单的基于Smart Framework的应用程序就运行起来了,让它再飞一会吧!

展开阅读全文
打赏
1
11 收藏
分享
加载中
大漠真人博主

引用来自“jeep_t”的评论

pom.xml 中Missing artifact com.smart:smart-framework🏺2.0 ,是要把jar包手动添加到本地仓库??
估计是Maven的仓库网络不稳定、、
2014/11/05 17:20
回复
举报
pom.xml 中Missing artifact com.smart:smart-framework🏺2.0 ,是要把jar包手动添加到本地仓库??
2014/11/05 10:21
回复
举报
大漠真人博主

引用来自“黄道坤”的评论

好吧,我手动下了dbutils、lang、collections、fileupload这几个apache的包。
但是,一访问就出现java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.defaultIfEmpty
请问咱们的框架依赖的哪个版本的lang包?
ps、不是已经有2.2了嘛?赶紧maven库里去呀。
继续学习……

引用来自“大漠真人”的评论

嗯,2.2.了,最新的文档估计还得等等呢

引用来自“黄道坤”的评论

开源中国库里还没有
2.2已经发布到Maven中央库了
2014/04/24 11:32
回复
举报

引用来自“黄道坤”的评论

好吧,我手动下了dbutils、lang、collections、fileupload这几个apache的包。
但是,一访问就出现java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.defaultIfEmpty
请问咱们的框架依赖的哪个版本的lang包?
ps、不是已经有2.2了嘛?赶紧maven库里去呀。
继续学习……

引用来自“大漠真人”的评论

嗯,2.2.了,最新的文档估计还得等等呢
开源中国库里还没有
2014/04/24 11:10
回复
举报

引用来自“黄道坤”的评论

2.6可用,已测。

引用来自“大漠真人”的评论

什么2.6?
lang包 版本
2014/04/24 11:06
回复
举报

引用来自“黄勇”的评论

引用来自“大漠真人”的评论

引用来自“abel533”的评论

最新版需要增加:
//请求映射,处理使用GET方法提交的 /hello 请求
@Request("GET:/index")
public View index(){
return new View("index.jsp");
}

嗯,新版本取消了默认的跳转

简化了 DispatcherServlet 的代码逻辑,去掉了默认跳转,统一转到 Action 上进行跳转。
弱弱的问一句,那默认跳转如何做呢? 貌似@Request("GET:/")不行啊
2014/04/24 11:00
回复
举报
大漠真人博主

引用来自“黄道坤”的评论

2.6可用,已测。
什么2.6?
2014/04/24 10:48
回复
举报
大漠真人博主

引用来自“黄道坤”的评论

好吧,我手动下了dbutils、lang、collections、fileupload这几个apache的包。
但是,一访问就出现java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.defaultIfEmpty
请问咱们的框架依赖的哪个版本的lang包?
ps、不是已经有2.2了嘛?赶紧maven库里去呀。
继续学习……
嗯,2.2.了,最新的文档估计还得等等呢
2014/04/24 10:48
回复
举报
2.6可用,已测。
2014/04/24 10:40
回复
举报
好吧,我手动下了dbutils、lang、collections、fileupload这几个apache的包。
但是,一访问就出现java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.defaultIfEmpty
请问咱们的框架依赖的哪个版本的lang包?
ps、不是已经有2.2了嘛?赶紧maven库里去呀。
继续学习……
2014/04/24 10:38
回复
举报
更多评论
打赏
29 评论
11 收藏
1
分享
返回顶部
顶部