开发工具 Eclipse 3.3 Tomcat 6.0
运行坏境 Window XP
实现效果 Ajax
涉及框架 Struts2ibatis Spring JQuery
准备 Jar 包
commons-collections.jar
commons-dbcp.jar
commons-fileupload-1.2.jar
commouns-logging-1.04.jar
freemarker-2.3.8.jar
ibatis-2.3.677.jar
json.jar
json-lib-21.1.jar
mysql-connector.jar
ognl-2.6.1.1.jar
spring.jar
struts2-core-2.1.8.1.jar
struts2-json-plungin-2.1.8.jar
struts2-junit-plugin-2.1.8.1.jar
struts-spring-plugin-2.1.8.1.jar
xwork-core-2.1.6.jar
第一步加入上述jar 包
下面跟我做一个简单的登陆例子来明白整个框架的运行过程。
首先数据库以mysql 为例
数据库 : test
表名:t_user
SQL 语句
createtable t_user
(
id int primary key auto_increment not null,
name varchar(20) not null
);
加
第二步配置strtus.xml
<struts>
<!-- 产生对象从spring 配置文件中读取 -->
<constantname="struts.objectFactory"value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
<package name="ajax"extends="json-default">
<action name="ajaxRequest" class="loginAction">
<result type="json"name="success">
<paramname="includeProperties">
ajaxRequest\.name
</param>
</result>
</action>
</package>
</struts>
第二步配置 applicationContext.xml 在WEB-INF 目录下
<!-- 配置数据源 -->
<bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource">
<propertyname="driverClassName"value="com.mysql.jdbc.Driver"/>
<property name="url"value="jdbc:mysql://127.0.0.1:3306/test"/>
<property name="username"value="root"/>
<property name="password"value="123"/>
</bean>
<!--ibatis 操作对象-->
<bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<propertyname="configLocation">
<value>/WEB-INF/SqlMapConfig.xml</value>
</property>
<propertyname="dataSource">
<refbean="dataSource"/>
</property>
</bean>
<!-- 模板页面 -->
<beanid="sqlMapClientTemplate"class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<propertyname="sqlMapClient">
<refbean="sqlMapClient"/>
</property>
</bean>
<!-- 用户DAO类 -->
<bean id="UserDAO"class="com.dao.UserDAO">
<propertyname="sqlMapClientTemplate">
<reflocal="sqlMapClientTemplate"/>
</property>
</bean>
<!-- spring 集成struts2 -->
<bean id="loginAction"class="com.web.Login" scope="singleton">
<propertyname="userDao">
<refbean="UserDAO" />
</property>
</bean>
第三步配置 SqlMapConfig.xml 在WEB-INF 目录下
<sqlMapConfig>
<sqlMapresource="com/pojo/User.xml"/>
</sqlMapConfig>
建实体类类 com.pojo.User.java
建配置文件com.pojo.User.xml
<sqlMapnamespace="User">
<typeAliasalias="user" type="com.pojo.User" />
<selectid="getUser" parameterClass="java.lang.String" resultClass="user">
<![CDATA[
select * from t_user where name = #name#
]]>
</select>
</sqlMap>
建DAO类 com.dao.UserDAO 继承 SqlMapClientDaoSupport ,写个简单测试用户的方法
import java.util.List;
import com.pojo.User;
public class UserDAO extendsSqlMapClientDaoSupport {
public boolean login(User user)
{
Listlist=this.getSqlMapClientTemplate().queryForList("getUser",user.getName());
if(list.size()>0)
return true;
return false;
}
}
建Action 类 com.web.Login 继承 ActionSupport
package com.web;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
import com.dao.UserDAO;
importcom.opensymphony.xwork2.ActionSupport;
import com.pojo.User;
public class Login extends ActionSupport{
private String name;
private UserDAO userDao;
@Override
public String execute() throws Exception {
User user=new User();
user.setName(this.name);
String result=null;
if(userDao.login(user))
{
result= "LoginSUCCESS!";
}
else
{
result = "The Name is not exists!";
}
HttpServletResponse response =ServletActionContext.getResponse();
PrintWriter out= response.getWriter();
if(out!=null)
{
out.write(result);
out.flush();
out.close();
}
return SUCCESS;
}
public void setName(String name) {
this.name = name;
}
public void setUserDao(UserDAO userDao) {
System.out.println("------setUserDao()------");
this.userDao = userDao;
}
}
第四步配置 web.xml
<!--struts2 配置 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring 配置 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
第五步建个index.jsp页面 ,内容如下:
<script type="text/javascript"src="js/jquery.min.js"></script> /// 在 WEB-INF 建个文件夹名为js,把jquery.min.js扔进去
<SCRIPT >
$(document).ready(function(){
$("#check").click(function(){
$.ajax({
type: "POST",
url:"ajaxRequest.action",
data: "name=" +$("#name").val(),
dataType: "html",
success : function(ret){
alert(ret);
}
});
});//click
});
</SCRIPT>
<input name="name"id="name" />
<input type="button"value="check" id="check" />
下面讲下Junit 的使用,它是个测试框架,原理依旧Java 断言机制原理。
添加 Junit 4.*。jar ,也可以用esclipse自带的
a. 新建一个HelloWorld.java文件
public class HelloWorld {
public int test()
{
System.out.println("HelloWorld!");
return 1;
}
}
现在要测试HelloWorld 下的test的方法
b.新建一个test包
新建Junit TestCase
Name 一般以Test 打头加上要测试类的名称(例如 TestHelloWorld)
还有个Class undertest 就是你要测试的名字要全称
c. 下一步之后要选择你要测试的方法
进入TestHelloWorld ,这个有一个静态导入import static org.junit.Assert.*;
自动会生成test+你选择的方法名(我的例子生成的是public voidtestTest() )
按一下你的代码补全(一般是Alt+/)里面有很多测试方法
assertEquals(1,new HelloWorld().test());
鼠标右击,运行Junit Test 绿的就OK了
页面中有的地方Unknown macro: 当它不存在好了
13:45 2010-7-22