Struts2+Spring 整合成功测试案例。
一、建立动态webProject: ssweb
二、准备jar包,存于WebContent/WEB-INF/lib下。
1.commons-dbcp.jar
2.commons-io-2.0.1.jar
3.commons-logging.jar
4.commons-pool.jar
5.spring.jar
6.spring-aop.jar
7.spring-beans.jar
8.spring-Context.jar
9.spring-Context-support.jar
10.spring-core.jar
11.spring-jdbc.jar
12.spring-tx.jar
13.commons-fileupload-1.2.2.jar
14.struts2-core-2.3.4.jar
15.xwork-core-2.3.4.jar
16. struts2-spring-plugin-2.2.1.jar
三、相应的文档配
1. web.xml
<display-name>ssweb</display-name>
<!-- 使用ContextLoaderListener初始化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>
<!-- 定义Struts 2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- FilterDispatcher用来初始化Struts 2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2. 如上面蓝色部分:配置applicationContext-×.xml 。即Spring 配置.
创建路径:WebContent/WEB-INF/applicationContext-core.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
</property>
<property name="url">
<value>jdbc:sqlserver://localhost:1433;DatabaseName=master</value>
</property>
<property name="username">
<value>Tony</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean><bean id="personService" class="com.ssweb.service.impl.PersonServiceImpl">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate"/>
</property>
</bean>
<bean id="personAction" class="com.ssweb.Action.PersonAction"><property name="personService">
<ref bean="personService" />
</property>
</bean>
</beans>
3. 配置src/struts.xml. 注意绿色部分
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<constant name="struts.objectFactory" value="spring"></constant>
<package name="person" extends="struts-default" namespace="/">
<action name="add" class="personAction">
<result name="success">/success.jsp</result>
</action>
</package></struts>
四、编写Java 类。
1. Person.java
package com.ssweb.unit;
public class Person {
private int pid;
private String pname;
private int page;
private String paddr;public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}public String getPaddr() {
return paddr;
}
public void setPaddr(String paddr) {
this.paddr = paddr;
}
public Person(){}
public Person(int pid,String pname,int page,String paddr){
this.setPid(pid);
this.pname=pname;
this.setPage(page);
this.paddr=paddr;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}}
2.接口PersonService.java
package com.ssweb.service;
import com.ssweb.unit.Person;
public interface PersonService {
public void InsertPer(Person person);
}
3.接口实现
package com.ssweb.service.impl;
import org.springframework.jdbc.core.JdbcTemplate;
import com.ssweb.service.PersonService;
import com.ssweb.unit.Person;public class PersonServiceImpl implements PersonService {
JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public void InsertPer(Person person) {
// TODO Auto-generated method stub
String sql="Insert into T_Person (id,pname,page,paddr)values (?,?,?,?)";
jdbcTemplate.update(sql, new Object[]{person.getPid(),person.getPname(),person.getPage(),person.getPaddr()});
}}
4.编写Action类:PersonAction
package com.ssweb.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.ssweb.service.PersonService;
import com.ssweb.service.impl.PersonServiceImpl;
import com.ssweb.unit.Person;@SuppressWarnings("serial")
public class PersonAction extends ActionSupport {
//依赖注入Spring接口
private PersonService personService;
//New Person(), 导入Get、Set方法
Person per=new Person();
public Person getPer() {
return per;
}
public void setPer(Person per) {
this.per = per;
}
public PersonService getPersonService() {
return personService;
}
public void setPersonService(PersonService personService) {
this.personService = personService;
}
public String execute() throws Exception {
System.out.println("#########################");
System.out.println(per.getPid());
System.out.println(per.getPname());
personService.InsertPer(per);
return SUCCESS;
}
}
五、测试界面
1.personadd.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加界面</title>
</head>
<body>
<s:form action ="add.action" method="post">
<s:textfield name="per.pid" />
<s:textfield name="per.pname" />
<s:textfield name="per.page" />
<s:textfield name="per.paddr" />
<s:submit />
<!-- 或此方式
<input type="text" name="per.pid"/><br/>
<input type="text" name="per.pname"/><br/>
<input type="text" name="per.page"/><br/>
<input type="text" name="per.paddr"/><br/>
<input type="submit" name="submit" value="submit"/>
-->
</s:form>
</body>
</html>
2.success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Success</title>
</head>
<body>OK
</body>
</html>
六、DB中建立T_Person表。