开发工具 Eclipse 3.3 Tomcat 6.0 运行坏境 Window XP 实现效果 Ajax
涉及框架 Struts2 ibatis 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 语句
create table t_user (
id int primary key auto_increment not null, name varchar(20) not null ); 加
第二步配置 strtus.xml <struts>
<!-- 产生对象从spring 配置 文件中读取 --> <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /> <package name="ajax" extends="json-default">
<action name="ajaxRequest" class="loginAction"> <result type="json" name="success"> <param name="includeProperties"> ajaxRequest\.name
</param> </result> </action> </package> </struts>
第二步 配置 applicationContext.xml 在WEB-INF 目录下 <!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="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"> <property name="configLocation">
<value>/WEB-INF/SqlMapConfig.xml</value> </property>
<property name="dataSource"> <ref bean="dataSource"/> </property> </bean>
<!-- 模板页面 --> <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> <property name="sqlMapClient"> <ref bean="sqlMapClient"/> </property> </bean>
<!-- 用户DAO类 -->
<bean id="UserDAO" class="com.dao.UserDAO"> <property name="sqlMapClientTemplate"> <ref local="sqlMapClientTemplate"/> </property> </bean>
<!-- spring 集成 struts2 -->
<bean id="loginAction" class="com.web.Login" scope="singleton"> <property name="userDao"> <ref bean="UserDAO" /> </property> </bean>
第三步 配置 SqlMapConfig.xml 在WEB-INF 目录下 <sqlMapConfig>
<sqlMap resource="com/pojo/User.xml"/> </sqlMapConfig>
建实体类类 com.pojo.User.java 建配置文件 com.pojo.User.xml
<sqlMap namespace="User">
<typeAlias alias="user" type="com.pojo.User" />
<select id="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 extends SqlMapClientDaoSupport { public boolean login(User user) {
List list=this.getSqlMapClientTemplate().queryForList("getUser",user.getName()); if(list.size()>0) return true; return false; }
}
建Action 类 com.web.Login 继承 ActionSupport package com.web;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.dao.UserDAO;
import com.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= "Login SUCCESS!"; } 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() {
涉及框架 Struts2 ibatis 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 语句
create table t_user (
id int primary key auto_increment not null, name varchar(20) not null ); 加
第二步配置 strtus.xml <struts>
<!-- 产生对象从spring 配置 文件中读取 --> <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /> <package name="ajax" extends="json-default">
<action name="ajaxRequest" class="loginAction"> <result type="json" name="success"> <param name="includeProperties"> ajaxRequest\.name
</param> </result> </action> </package> </struts>
第二步 配置 applicationContext.xml 在WEB-INF 目录下 <!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="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"> <property name="configLocation">
<value>/WEB-INF/SqlMapConfig.xml</value> </property>
<property name="dataSource"> <ref bean="dataSource"/> </property> </bean>
<!-- 模板页面 --> <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> <property name="sqlMapClient"> <ref bean="sqlMapClient"/> </property> </bean>
<!-- 用户DAO类 -->
<bean id="UserDAO" class="com.dao.UserDAO"> <property name="sqlMapClientTemplate"> <ref local="sqlMapClientTemplate"/> </property> </bean>
<!-- spring 集成 struts2 -->
<bean id="loginAction" class="com.web.Login" scope="singleton"> <property name="userDao"> <ref bean="UserDAO" /> </property> </bean>
第三步 配置 SqlMapConfig.xml 在WEB-INF 目录下 <sqlMapConfig>
<sqlMap resource="com/pojo/User.xml"/> </sqlMapConfig>
建实体类类 com.pojo.User.java 建配置文件 com.pojo.User.xml
<sqlMap namespace="User">
<typeAlias alias="user" type="com.pojo.User" />
<select id="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 extends SqlMapClientDaoSupport { public boolean login(User user) {
List list=this.getSqlMapClientTemplate().queryForList("getUser",user.getName()); if(list.size()>0) return true; return false; }
}
建Action 类 com.web.Login 继承 ActionSupport package com.web;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.dao.UserDAO;
import com.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= "Login SUCCESS!"; } 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("Hello World!"); return 1; } }
现在要测试HelloWorld 下的test的方法
b.新建一个test包 新建Junit Test Case
Name 一般以Test 打头 加上要测试类的名称(例如 TestHelloWorld) 还有个Class under test 就是你要测试的名字 要全称 c. 下一步之后要选择你要测试的方法
进入 TestHelloWorld ,这个有一个静态导入 import static org.junit.Assert.*; 自动会生成test+你选择的方法名(我的例子生成的是public void testTest() ) 按一下你的代码补全(一般是Alt+ /) 里面有很多测试方法 assertEquals(1,new HelloWorld().test()); 鼠标右击 ,运行Junit Test 绿的就OK了
页面中有的地方 Unknown macro: 当它不存在好了