本文所使用到的相关产品:
jdk 5
tomcat 5.x
eclipse 3.x
mysql server 5.x
获取源代码:
下载源代码项目包,并把本示例相关的jar包存放到/WEB-INF/lib目录(相关的lib包信息及下载),使用Eclipse打开即可。
可以使用使用maven
1、建模型Person
本模型描述了我们应用中的事物的原型,它的相关属性。
本示例中用了一个用户名称和性别作为范例。
代码如下
Person.java
package com.easyjf.demo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;@Entity public class Person { @Id @GeneratedValue(strategy=GenerationType.TABLE) private Long id; private String name; private String sex; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
建立服务接口
服务接口抽象出了模型要进行的相关逻辑操作,本例中用了简单的CRUD操作来进行业务操作。
IPersonService
.java
package com.easyjf.demo; import java.io.Serializable; import java.util.List; public interface IPersonService { public List<Person> findAll(); public void save(Person p); public void remove(Serializable id); public Person find(Serializable id); }
建立服务实现
实现了接口中描述的操作。
PersonServiceImpl.java
package com.easyjf.demo; import java.io.Serializable; import java.util.List;import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query;import org.springframework.transaction.annotation.Transactional;@Transactional public class PersonServiceImpl implements IPersonService { @PersistenceContext private EntityManager em; @SuppressWarnings("unchecked") public List<Person> findAll() { Query q = this.getEm().createQuery("select p FROM Person p"); return q.getResultList(); } public Person find(Serializable id) { return this.getEm().find(Person.class, id); } public void remove(Serializable id) { Person p = this.find(id); if (p != null) { this.getEm().remove(p); } } public void save(Person p) { if (p.getId() == null) { this.getEm().persist(p); } else { this.getEm().merge(p); } } public EntityManager getEm() { return em; } public void setEm(EntityManager em) { this.em = em; }}
建立MVC控制层
整合模型,业务层,控制视图的输出。
PersonAction.java
package com.easyjf.demo;import java.util.List;import com.easyjf.container.annonation.Inject; import com.easyjf.web.Module; import com.easyjf.web.Page; import com.easyjf.web.WebForm; import com.easyjf.web.core.AbstractPageCmdAction;public class PersonAction extends AbstractPageCmdAction { @Inject private IPersonService personService; public Page doInit(WebForm f, Module m) { return go("list"); } public void doList(WebForm form) { List<Person> list = this.personService.findAll(); form.addResult("list", list); } public void doSave(WebForm form) { Person p = form.toPo(Person.class); this.personService.save(p); go("list"); } public void doNew() { page("edit"); } public void doEdit(WebForm form) { Long id = new Long(form.get("id").toString()); Person p = this.personService.find(id); form.addPo(p); } public void doDelete(WebForm form) { Long id = new Long(form.get("id").toString()); this.personService.remove(id); go("list"); } public void setPersonService(IPersonService personService) { this.personService = personService; } }
建立JPA配置文件/src/main/java/META-INF/persistence.xml,用来定义Spring的应用单元。
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0"> <persistence-unit name="app-unit" transaction-type="RESOURCE_LOCAL"> </persistence-unit> </persistence>
建立Spring配置文件/src/main/java/application.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost/demo?createDatabaseIfNotExist=true" />
<property name="username" value="root" /> <property name="password" value="" /> </bean> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="database" value="MYSQL" /> <property name="generateDdl" value="true" /> <property name="showSql" value="true" /> </bean> </property> </bean> <bean id="personService" class="com.easyjf.demo.PersonServiceImpl" /> </beans>
修改web.xml,使EasyJWeb能处理用户请求。
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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_2_5.xsd">
<!--定义easyjweb的配置文件位置 --> <context-param> <param-name>easyjwebConfigLocation</param-name> <param-value>/WEB-INF/mvc.xml</param-value> </context-param> <!--定义EasyJWeb的主控Servlet --> <servlet> <servlet-name>easyjf</servlet-name> <servlet-class>com.easyjf.web.ActionServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>easyjf</servlet-name> <url-pattern>*.ejf</url-pattern><!--所有.ejf的扩展名都由easyjweb来处理--> </servlet-mapping> <servlet-mapping> <servlet-name>easyjf</servlet-name> <url-pattern>/ejf/*</url-pattern><!--所有/ejf/*样式的url都交由EasyJWeb来处理--> </servlet-mapping> <!-- 定义字符处理Filter --> <filter> <filter-name>CharsetFilter</filter-name> <filter-class>com.easyjf.web.CharsetFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>ignore</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetFilter</filter-name> <servlet-name>easyjf</servlet-name> </filter-mapping> <!-- 定义内容输出压缩Filter --> <filter> <filter-name>GZIPFilter</filter-name> <filter-class>com.easyjf.web.GZIPFilter</filter-class> </filter> <filter-mapping> <filter-name>GZIPFilter</filter-name> <servlet-name>easyjf</servlet-name> </filter-mapping> </web-app>
建立easyjweb配置文件/src/main/webapp/WEB-INF/mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <easyjf-web xmlns="http://www.easyjf.com/schema/easyjf/web"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.easyjf.com/schema/easyjf/web http://www.easyjf.com/schema/easyjf/web/easyjf-web-0.0.1.xsd">
<beans> <!-- 申明Spring为easyjweb 应用容器开始 --> <bean name="springContainer" class="org.springframework.web.context.support.XmlWebApplicationContext"> <property name="configLocations"> <list> <value>WEB-INF/classes/application.xml</value> </list> </property> </bean> <bean name="innerSpringContainer" class="com.easyjf.container.impl.SpringContainer"> <property name="factory" ref="springContainer" /> </bean> <!-- 申明Spring为easyjweb 应用容器结束 --> </beans> <modules> <!-- easyjweb 模块定义开始 --> <module name="person" path="/person" action="com.easyjf.demo.PersonAction"> </module> <!-- easyjweb 模块定义结束 --> </modules> </easyjf-web>
建立模板文件edit.html,路径:/src/main/webapp/WEB-INF/views/person/edit.html,此模板用于呈现添加和编辑界面,内容如下:
<form method="post" action="$!html.forward('save')" name="edit"> <input type="hidden" name="id" value="${id}" /> 姓名:<input type="text" maxlength="20" size="20" value="$!{name}" name="name"><br /> 性别:<input type="text" maxlength="20" size="20" value="$!{sex}" name="sex"><br /> <input type="submit" value="提交" name="submit"> <input type="button" value="返回" name="return" onclick="window.location.href='$!html.forward('list')';"> </form>
建立模板文件list.html,路径/src/main/webapp/WEB-INF/views/person/list.html,此模板用于呈现列表数据,内容如下:
<a href="$!html.forward('person.new')"><b>添加</b></a><br /> #foreach ( $info in $list ) 姓名:$info.name <br /> 性别:$info.sex $info.id <br /> <a href="$!html.url('person')/edit/$info.id">编辑</a> <a href="$!html.url('person')/delete/$info.id">删除</a> <hr> #end
到此,一个EASYJWEB的CRUD程序就出来了。
把应用拷到Tomcat下的webapp目录,比如应该目录为myapp,则启动tomcat后,即可通过下面的地址访问:
http://localhost:8080/myapp/ejf/person![]()
下载JAR包:
本文所用到的相关包
antlr-2.7.6.jar asm-1.5.3.jar cglib-2.1_3.jar commons-collections-3.2.jar commons-fileupload-1.0.jar commons-logging-1.0.4.jar dom4j-1.6.1.jar easydbo-0.9.1.jar easyjweb-core-1.0.1.jar easyjweb-ext-1.0.1.jar hibernate-3.2.2.ga.jar hibernate-annotations-3.2.1.ga.jar hibernate-entitymanager-3.2.1.ga.jar javassist-3.3.ga.jar jaxen-1.1-beta-4.jar jboss-archive-browsing-5.0.0alpha-200607201-119.jar jta-1.0.1B.jar log4j-1.2.14.jar mysql-connector-java-5.0.5.jar persistence-api-1.0.jar spring-2.0-rc2.jar velocity-1.4.jar
参考文献:
struts实现可参考
http://struts.apache.org/2.x/docs/struts-2-spring-2-jpa-ajax.html![]()
EasyJWeb快速入门
http://www.easyjf.com/easyjweb/gettingstart.htm![]()
EasyJWeb开发指南
http://www.easyjf.com/easyjweb/EasyJWeb-developer-Guide.doc![]()
本文相关资源:
所有JAR文件下载地http://www.easyjf.com/download/easyjweb/easyjweb-quickstart-crud-libs.zip![]()
本应用源代码下载地址http://www.easyjf.com/download/easyjweb/easyjweb-quickstart-crud-src.zip![]()
本应用源码加LIB下载地址:
http://www.easyjf.com/download/easyjweb/easyjweb-quickstart-crud.zip![]()
