Maven管理下的Struts2+Spring+Mybatis框架搭建
Step1、新建一个maven工程
下一步
下一步,选择maven-archetype-webapp
下一步:
本来应该是SSM。。。。
finish完成。
现在的目录结构是这样的
接下来:新增source folder: src/main/java, src/test/java, src/test/resources
右击工程,build path,配置build path,修改源文件的输出路径
然后配置project Facets
点击convert to faceted from…
OK,启动工程,在浏览器中输入http://localhost:8080/S2SS-demo/
Step2: 添加maven框架
首先在pom.xml文件中添加maven依赖的jar包。
<!– 添加Struts依赖 –>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.15.1</version>
</dependency>
然后在resource文件夹下新增struts.xml文件。
然后在web.xml文件中添加struts的配置
感觉没什么问题,也在web.xml中配置了welcome-file=index.jsp,但访问http://localhost:8080/S2SS-demo/会出异常,There
is no Action mapped for namespace [/] and action name [] associated with context path [/S2SS-demo],http://localhost:8080/S2SS-demo/index.jsp可以正常访问,应该是被struts拦截了,没找到破的方法。
UserAction定义了两个方法,login_input & login.
struts2的action中,name可以使用通配符。例如<action name=”*User” class=”com.s2ss.demo.UserAction” method=”{1}”>,可以匹配任何的以User结尾的类com.s2ss.demo.UserAction中的action方法。
index.jsp页面是这个样子的
<html>
<body>
<a href=”login_input.action”>GO</a>
</body>
</html>
点击GO,会执行action中的login_input方法,该方法返回字符串“success”,根据struts中的配置转到login.jsp页面。
step3:添加spring框架
和struts思路差不多。。。。
1、首先在pom.xml文件中添加spring相关的依赖。
<!– 添加Spring依赖 –>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
另外添加struts中使用spring的插件
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
2、然后在web.xml中配置spring监听
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationContext.xml</param-value>
</context-param>
3、新增applicationContext.xml,注入bean
<?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“ xmlns:context=”http://www.springframework.org/schema/context“
xsi:schemaLocation=”
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd“>
<bean id=”userAction” class=”com.s2ss.demo.UserAction” scope=”prototype”>
</bean>
</beans>
<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“ xmlns:context=”http://www.springframework.org/schema/context“
xsi:schemaLocation=”
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd“>
<bean id=”userAction” class=”com.s2ss.demo.UserAction” scope=”prototype”>
</bean>
</beans>
4、此时,struts中的action的class就可以这么写了~
要跟bean的id一致~~粘上代码吧,万一想偷懒呢~~
<package name=”p_user” extends=”struts-default”>
<action name=”login_input” class=”userAction” method=”login_input”>
<result name=”success”>
/login.jsp
</result>
</action>
<action name=”login” class=”userAction” method=”login”>
<result name=”success”>
/login_success.jsp
</result>
</action>
</package>
step4:添加Mybatis框架
1、pom.xml文件中添加依赖
<!– 添加MyBatis依赖 –>
<!–注入datasource依赖–>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.3</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.2</version>
</dependency>
2、spring中注入sqlSessionFactory
<bean id=”dataSource”
class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<property name=”driverClassName”>
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name=”url”>
<value>jdbc:oracle:thin:@ip:port/**</value>
</property>
<property name=”username”>
<value>**</value>
</property>
<property name=”password”>
<value>**</value>
</property>
</bean>
<bean id=”sqlSessionFactory” class=”org.mybatis.spring.SqlSessionFactoryBean”>
<property name=”dataSource” ref=”dataSource” />
<!– 自动到mappers包下面去搜索mybatis的映射文件 –>
<property name=”mapperLocations” value=”classpath*:mapper/*.xml” />
</bean>
<bean id=”transactionManager” class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=”dataSource” ref=”dataSource” />
</bean>
<!– DAO –>
<bean id=”userDao” class=”org.mybatis.spring.mapper.MapperFactoryBean” >
<property name=”mapperInterface” value=”com.s2ss.demo.dao.UserDao”></property>
<property name=”sqlSessionFactory” ref=”sqlSessionFactory” />
</bean>
<bean id=”userService” class=”com.s2ss.demo.service.impl.UserServiceImpl”>
<property name=”userDao” ref=”userDao” />
</bean>
<bean id=”userAction” class=”com.s2ss.demo.action.UserAction” scope=”prototype”>
<property name=”userService” ref=”userService” />
</bean>
service,dao接口和类文件不贴了。mapper中只列了一个简单的sql
大概就是这个样子了。