实现效果 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()
{
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了