为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补;
1:File--->New--->Other--->Maven--->Maven Project--->Next(之后界面如下所示:)
--->Next(点击next之后出现如下界面:选择最后一个 maven-archetype-webapp,然后点击next)
--->Next(点击next之后出现如下界面,然后选择好组织号,工程号,版本号即可),最后点击Finish
2:maven项目创建好之后会报错,这里先在pom.xml中导入jar包,导入方式如下所示:这个pom配置好之后点击保存会将jar包下载到本地仓库,这个学习maven的时候都配置过,这个自己下去脑补吧;注意第304行struts2注解配置;
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3 <modelVersion>4.0.0</modelVersion>
4 <groupId>com.bie.maven</groupId>
5 <artifactId>ssh_annotation</artifactId>
6 <packaging>war</packaging>
7 <version>0.0.1-SNAPSHOT</version>
8 <name>ssh_annotation Maven Webapp</name>
9 <url>http://maven.apache.org</url>
10
11
12
13 <!-- 配置一下jar包 -->
14 <properties>
15 <java-version>1.8</java-version>
16 <junit-version>4.8.2</junit-version>
17 <org.springframework-version>3.2.4.RELEASE</org.springframework-version>
18 <jackson-mapper-asl-version>1.9.12</jackson-mapper-asl-version>
19 <jackson-core-asl-version>1.9.12</jackson-core-asl-version>
20 <mysql-connector-java-version>5.1.8</mysql-connector-java-version>
21
22 <!--
23 <org.mybatis-version>3.2.7</org.mybatis-version>
24 <org.mybatis-spring-version>1.2.2</org.mybatis-spring-version>
25 -->
26
27 <opensymphony-version>2.4.2</opensymphony-version>
28 <freemarker-version>2.3.9</freemarker-version>
29 <c3p0-version>0.9.1.2</c3p0-version>
30 <commons-collections-version>1.0</commons-collections-version>
31 <commons-fileupload-version>1.2.2</commons-fileupload-version>
32 <org.apache.commons-version>3.1</org.apache.commons-version>
33 <commons-codec-version>1.6</commons-codec-version>
34 <dom4j-version>1.6.1</dom4j-version>
35 <javax.servlet-version>1.2</javax.servlet-version>
36 <aspectjweaver-version>1.6.6</aspectjweaver-version>
37 <slf4j-log4j12-version>1.6.6</slf4j-log4j12-version>
38 <log4j-version>1.2.16</log4j-version>
39 <javax.servlet-jsp-version>2.0</javax.servlet-jsp-version>
40 <cglib-version>2.2.2</cglib-version>
41 <slf4j-api-version>1.6.6</slf4j-api-version>
42 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
43 </properties>
44 <dependencies>
45 <!-- 配置 junit4.8.2 -->
46 <dependency>
47 <groupId>junit</groupId>
48 <artifactId>junit</artifactId>
49 <version>${junit-version}</version>
50 <type>jar</type>
51 </dependency>
52 <!-- 配置 spring -->
53 <dependency>
54 <groupId>org.springframework</groupId>
55 <artifactId>spring-core</artifactId>
56 <version>${org.springframework-version}</version>
57 </dependency>
58 <dependency>
59 <groupId>org.springframework</groupId>
60 <artifactId>spring-web</artifactId>
61 <version>${org.springframework-version}</version>
62 </dependency>
63 <dependency>
64 <groupId>org.springframework</groupId>
65 <artifactId>spring-test</artifactId>
66 <version>${org.springframework-version}</version>
67 </dependency>
68 <dependency>
69 <groupId>org.springframework</groupId>
70 <artifactId>spring-aspects</artifactId>
71 <version>${org.springframework-version}</version>
72 </dependency>
73 <dependency>
74 <groupId>org.springframework</groupId>
75 <artifactId>spring-context-support</artifactId>
76 <version>${org.springframework-version}</version>
77 </dependency>
78 <dependency>
79 <groupId>org.springframework</groupId>
80 <artifactId>spring-web</artifactId>
81 <version>${org.springframework-version}</version>
82 </dependency>
83
84 <dependency>
85 <groupId>org.springframework</groupId>
86 <artifactId>spring-webmvc</artifactId>
87 <version>${org.springframework-version}</version>
88 </dependency>
89 <dependency>
90 <groupId>org.springframework</groupId>
91 <artifactId>spring-jdbc</artifactId>
92 <version>${org.springframework-version}</version>
93 </dependency>
94 <dependency>
95 <groupId>org.springframework</groupId>
96 <artifactId>spring-tx</artifactId>
97 <version>${org.springframework-version}</version>
98 </dependency>
99 <dependency>
100 <groupId>org.springframework</groupId>
101 <artifactId>spring-instrument</artifactId>
102 <version>${org.springframework-version}</version>
103 </dependency>
104 <dependency>
105 <groupId>org.springframework</groupId>
106 <artifactId>spring-instrument-tomcat</artifactId>
107 <version>${org.springframework-version}</version>
108 </dependency>
109
110 <dependency>
111 <groupId>org.springframework</groupId>
112 <artifactId>spring-orm</artifactId>
113 <version>${org.springframework-version}</version>
114 </dependency>
115 <!--springmvc 转换为 Json -->
116 <dependency>
117 <groupId>org.codehaus.jackson</groupId>
118 <artifactId>jackson-mapper-asl</artifactId>
119 <version>${jackson-mapper-asl-version}</version>
120 </dependency>
121 <dependency>
122 <groupId>org.codehaus.jackson</groupId>
123 <artifactId>jackson-core-asl</artifactId>
124 <version>${jackson-core-asl-version}</version>
125 </dependency>
126 <!--配置 freemarker -->
127 <dependency>
128 <groupId>freemarker</groupId>
129 <artifactId>freemarker</artifactId>
130 <version>${freemarker-version}</version>
131 </dependency>
132 <!-- 配置 mybatis-spring ssh这里可以不配置mybatis-->
133 <!--
134 <dependency>
135 <groupId>org.mybatis</groupId>
136 <artifactId>mybatis</artifactId>
137 <version>${org.mybatis-version}</version>
138 </dependency>
139 <dependency>
140 <groupId>org.mybatis</groupId>
141 <artifactId>mybatis-spring</artifactId>
142 <version>${org.mybatis-spring-version}</version>
143 </dependency>
144 -->
145
146 <!-- jdbc driver -->
147 <dependency>
148 <groupId>mysql</groupId>
149 <artifactId>mysql-connector-java</artifactId>
150 <version>${mysql-connector-java-version}</version>
151 </dependency>
152 <!-- connect pool with c3p0 -->
153 <dependency>
154 <groupId>c3p0</groupId>
155 <artifactId>c3p0</artifactId>
156 <version>${c3p0-version}</version>
157 </dependency>
158 <!-- apache commons jar -->
159 <!-- <dependency>
160 <groupId>commons-collections</groupId>
161 <artifactId>commons-collections</artifactId>
162 <version>${commons-collections-version}</version>
163 <scope>provided</scope>
164 </dependency> -->
165
166 <dependency>
167 <groupId>commons-fileupload</groupId>
168 <artifactId>commons-fileupload</artifactId>
169 <version>${commons-fileupload-version}</version>
170 </dependency>
171
172 <dependency>
173 <groupId>org.apache.commons</groupId>
174 <artifactId>commons-lang3</artifactId>
175 <version>${org.apache.commons-version}</version>
176 </dependency>
177
178 <dependency>
179 <groupId>commons-codec</groupId>
180 <artifactId>commons-codec</artifactId>
181 <version>${commons-codec-version}</version>
182 </dependency>
183 <!-- analyze xml use dom4j -->
184 <dependency>
185 <groupId>dom4j</groupId>
186 <artifactId>dom4j</artifactId>
187 <version>${dom4j-version}</version>
188 </dependency>
189 <!-- about servlet -->
190 <dependency>
191 <groupId>javax.servlet</groupId>
192 <artifactId>jstl</artifactId>
193 <version>${javax.servlet-version}</version>
194 </dependency>
195
196
197 <dependency>
198 <groupId>taglibs</groupId>
199 <artifactId>standard</artifactId>
200 <version>1.1.2</version>
201 </dependency>
202 <dependency>
203 <groupId>javax.servlet</groupId>
204 <artifactId>javax.servlet-api</artifactId>
205 <version>3.0.1</version>
206 <scope>provided</scope>
207 </dependency>
208 <dependency>
209 <groupId>org.slf4j</groupId>
210 <artifactId>slf4j-log4j12</artifactId>
211 <version>1.6.6</version>
212 <scope>provided</scope>
213 </dependency>
214 <dependency>
215 <groupId>log4j</groupId>
216 <artifactId>log4j</artifactId>
217 <version>1.2.17</version>
218 </dependency>
219
220 <dependency>
221 <groupId>org.slf4j</groupId>
222 <artifactId>slf4j-api</artifactId>
223 <version>1.6.6</version>
224 </dependency>
225 <dependency>
226 <groupId>javax.activation</groupId>
227 <artifactId>activation</artifactId>
228 <version>1.1.1</version>
229 </dependency>
230
231 <!-- memcached -->
232 <dependency>
233 <groupId>com.google.code.maven-play-plugin.spy</groupId>
234 <artifactId>memcached</artifactId>
235 <version>2.4.2</version>
236 </dependency>
237 <dependency>
238 <groupId>cglib</groupId>
239 <artifactId>cglib</artifactId>
240 <version>${cglib-version}</version>
241 </dependency>
242 <dependency>
243 <groupId>net.fckeditor</groupId>
244 <artifactId>java-core</artifactId>
245 <version>2.6</version>
246 </dependency>
247 <dependency>
248 <groupId>org.json</groupId>
249 <artifactId>json</artifactId>
250 <version>20131018</version>
251 </dependency>
252 <!-- excel鎿嶄綔 -->
253 <!-- <dependency> <groupId>cn.liu.jxl</groupId> <artifactId>jxl</artifactId>
254 <version>2.6.10</version> </dependency> -->
255
256 <dependency>
257 <groupId>com.sun.jersey</groupId>
258 <artifactId>jersey-client</artifactId>
259 <version>1.18.1</version>
260 </dependency>
261 <dependency>
262 <groupId>jsptags</groupId>
263 <artifactId>pager-taglib</artifactId>
264 <version>2.0</version>
265 </dependency>
266
267 <dependency>
268 <groupId>net.sourceforge.jexcelapi</groupId>
269 <artifactId>jxl</artifactId>
270 <version>2.6.10</version>
271 </dependency>
272
273 <dependency>
274 <groupId>opensymphony</groupId>
275 <artifactId>oscache</artifactId>
276 <version>2.4.1</version>
277 </dependency>
278 <dependency>
279 <groupId>javax.servlet</groupId>
280 <artifactId>servlet-api</artifactId>
281 <version>2.4</version>
282 <scope>provided</scope>
283 </dependency>
284
285 <dependency>
286 <groupId>org.apache.struts</groupId>
287 <artifactId>struts2-core</artifactId>
288 <version>2.3.8</version>
289 <exclusions>
290 <exclusion>
291 <artifactId>javassist</artifactId>
292 <groupId>javassist</groupId>
293 </exclusion>
294 </exclusions>
295 </dependency>
296
297 <!-- spring和struts之间的联系 -->
298 <dependency>
299 <groupId>org.apache.struts</groupId>
300 <artifactId>struts2-spring-plugin</artifactId>
301 <version>2.3.8</version>
302 </dependency>
303
304 <!-- struts2的注解 -->
305 <dependency>
306 <groupId>org.apache.struts</groupId>
307 <artifactId>struts2-convention-plugin</artifactId>
308 <version>2.3.8</version>
309 </dependency>
310
311
312 <dependency>
313 <groupId>org.hibernate</groupId>
314 <artifactId>hibernate-core</artifactId>
315 <version>4.1.7.Final</version>
316 </dependency>
317 <dependency>
318 <groupId>org.hibernate</groupId>
319 <artifactId>hibernate-ehcache</artifactId>
320 <version>4.1.7.Final</version>
321 </dependency>
322 <dependency>
323 <groupId>displaytag</groupId>
324 <artifactId>displaytag</artifactId>
325 <version>1.2</version>
326 </dependency>
327
328 </dependencies>
329
330
331
332 <build>
333 <finalName>ssh_annotation</finalName>
334 </build>
335
336 </project>
3:web.xml里面的dtd默认是2.3的,不过2.3的不支持el表达式,所以这里修改为2.5的。配置如下所示:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
3 <display-name>Archetype Created Web Application</display-name>
4
5
6 <display-name>Archetype Created Web Application</display-name>
7
8 </web-app>
4:项目配置好上面的,接下来开始写代码,首先从web.xml的配置开始,比如struts2的核心过滤器,spring核心配置文件,监听器;
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
3 <display-name>Archetype Created Web Application</display-name>
4
5
6 <display-name>Archetype Created Web Application</display-name>
7
8 <!-- 配置spring的监听器 ,加载本地的springp配置文件-->
9 <context-param>
10 <param-name>contextConfigLocation</param-name>
11 <param-value>classpath:bean-*.xml</param-value>
12 </context-param>
13
14 <!--
15 spring的监听器 spring-web-3.2.4.RELEASE.jar ==》org.springframework
16 ==》context ==》ContextLoaderListener
17 -->
18 <listener>
19 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
20 </listener>
21
22
23 <!--
24 struts2的核心过滤器
25 1:filter-class ==》 struts2-core-2.3.8.jar ==》org.apache.struts2
26 ==》 dispatcher ==》 ng ==》filter ==》StrutsPrepareAndExecuteFilter
27 -->
28 <filter>
29 <filter-name>struts2Filter</filter-name>
30 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
31 </filter>
32 <filter-mapping>
33 <filter-name>struts2Filter</filter-name>
34 <url-pattern>/*</url-pattern>
35 </filter-mapping>
36
37
38
39 </web-app>
5:配置好之后就需要配置一下maven标准格式:在src/main下面创建一个java的文件夹,在src/下面创建一个test,在test下面创建java文件夹,配置如下所示:
6:将spring的配置文件bean-common.xml配置文件放到src/main/resources下面即可(src/main/resources也是根目录):配置如下所示:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans
3 xmlns="http://www.springframework.org/schema/beans"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xmlns:tx="http://www.springframework.org/schema/tx"
7 xmlns:aop="http://www.springframework.org/schema/aop"
8 xsi:schemaLocation="
9 http://www.springframework.org/schema/beans
10 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
11 http://www.springframework.org/schema/context
12 http://www.springframework.org/schema/context/spring-context-3.0.xsd
13 http://www.springframework.org/schema/tx
14 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
15 http://www.springframework.org/schema/aop
16 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
17 ">
18
19 <!-- 使用注解annotation配置项目 -->
20 <context:annotation-config></context:annotation-config>
21
22 <!-- 使用扫描组件,扫描注解 ,自动扫描某某包,扫描所有的包-->
23 <context:component-scan base-package="com.bie"></context:component-scan>
24
25 <!-- 使用spring管理struts,使用sring管理hibernate -->
26 <!--
27 配置数据源:
28 1:spring-jdbc-3.2.4.RELEASE.jar==》org.springframework.jdbc
29 ==》datasource
30 ==》DriverManagerDataSource
31 -->
32 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
33 <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
34 <property name="url" value="jdbc:mysql:///crm_ssh?characterEncoding=UTF-8"></property>
35 <property name="username" value="root"></property>
36 <property name="password" value="123456"></property>
37 </bean>
38
39 <!--
40 配置数据源生成hibernate的sessionFactory
41 1:spring-orm-3.2.4.RELEASE.jar ==》org.springframework.orm ==》hibernate4
42 ==LocalSessionFactoryBean
43 -->
44 <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
45 <!-- 引入数据源 ,hibernate可以操作数据库,使用某个数据源生成sessionFactory-->
46 <property name="dataSource" ref="dataSource"></property>
47
48 <!-- 配置hibernate的相关配置,方言,显示sql语句等等 -->
49 <property name="hibernateProperties">
50 <props>
51 <!--
52 mysql的方言:
53 hibernate-core-4.1.7.Final.jar
54 -->
55 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
56 <!-- 打印sql语句 -->
57 <prop key="hibernate.show_sql">true</prop>
58 </props>
59 </property>
60
61
62 <!-- 之前开发使用的是映射文件,现在使用的是注解配置 -->
63 <property name="annotatedClasses">
64 <!-- 这是一个集合,使用list集合进行赋值 -->
65 <list>
66 <!-- 使用注解的类都需要加到这里 -->
67 <value>com.bie.po.User</value>
68 <value>com.bie.po.Dept</value>
69 </list>
70 </property>
71 </bean>
72
73 <!--
74 spring采用事务管理hibernate的事务 :事务管理器:transactionManager
75 1:spring-orm-3.2.4.RELEASE.jar ==》org.springframework.orm ==》
76 hibernate4==》HibernateTransactionManager
77 -->
78 <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
79 <!-- spring要管理事务,那么spring要对hibernate拥有处置权 -->
80 <property name="sessionFactory" ref="sessionFactory"></property>
81 </bean>
82
83
84 <!-- 在配置切面 之上配置事务管理的通知:
85 1:事务管理的通知要使用上面的事务管理:transactionManager
86 -->
87 <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
88 <tx:attributes>
89 <!-- 配置事务的传播特性 -->
90 <tx:method name="find*" read-only="true"/>
91 <tx:method name="get*" read-only="true"/>
92 <tx:method name="query*" read-only="true"/>
93
94 <!-- required:本操作内如果有事务,则使用事务,如果没有,则开启新的事务 -->
95 <tx:method name="add*" propagation="REQUIRED"/>
96 <tx:method name="update*" propagation="REQUIRED"/>
97 <tx:method name="delete*" propagation="REQUIRED"/>
98 </tx:attributes>
99 </tx:advice>
100
101
102 <!--
103 配置切面,使用切面来管理事务
104 1:第一个※代表public
105 2:第二个※代表类
106 3:第三个※代表方法
107 4:第三个※(..)里面的..代表任意参数
108 -->
109 <aop:config>
110 <!-- 切入点 -->
111 <aop:pointcut expression="execution(* com.bie.service.impl.*.*(..))" id="transactionPointcut"></aop:pointcut>
112
113 <!--
114 切入点应用到什么通知:
115 1:advice-ref:应用什么通知
116 2:pointcut-ref在那个切入点应用这个通知;
117 -->
118 <aop:advisor advice-ref="transactionAdvice" pointcut-ref="transactionPointcut"/>
119 </aop:config>
120
121
122 </beans>
7:配置好之后开始写实体类po下面的实体类;(注解方式配置实体类,配置如下所示):
1 package com.bie.po;
2
3 import javax.persistence.Column;
4 import javax.persistence.Entity;
5 import javax.persistence.GeneratedValue;
6 import javax.persistence.GenerationType;
7 import javax.persistence.Id;
8 import javax.persistence.Table;
9
10 /**
11 * @author 作者:别先生
12 * @version 创建时间:2017年6月8日 上午11:55:43
13 * 类说明
14 * 1:使用注解完成实体类的配置
15 * 2:用户对应数据库的t_user表
16 */
17 @Entity
18 @Table(name = "t_user")
19 public class User {
20
21 private Integer id;//主键编号
22 private String name;//姓名
23 private String account;//账号
24 private String password;//密码
25
26 //设置主键,然后设置主键自增
27 @Id
28 @GeneratedValue(strategy=GenerationType.AUTO)
29 @Column(name="t_userId")
30 public Integer getId() {
31 return id;
32 }
33 public void setId(Integer id) {
34 this.id = id;
35 }
36
37 @Column(name="t_userName")
38 public String getName() {
39 return name;
40 }
41 public void setName(String name) {
42 this.name = name;
43 }
44
45 @Column(name="t_userAccount")
46 public String getAccount() {
47 return account;
48 }
49 public void setAccount(String account) {
50 this.account = account;
51 }
52
53 @Column(name="t_userPwd")
54 public String getPassword() {
55 return password;
56 }
57 public void setPassword(String password) {
58 this.password = password;
59 }
60
61 }
8:配置一下struts2的配置文件,配置如下所示:
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
4 "http://struts.apache.org/dtds/struts-2.0.dtd">
5
6 <struts>
7 <!-- struts2-core-2.3.8.jar ==》org.apache.struts2==》default.properties -->
8
9 <!-- 表示struts2的action由spring来生成 -->
10 <constant name="struts.objectFactory" value="spring"></constant>
11
12
13 </struts>
9:配置好上面的验证一下,将项目加载到tomcat中,然后启动tomcat看看是否报错,我这里不报错,就不做多叙述了;
至此,ssh注解版框架就搭建成功,接下来就可以进行简单测试了......
10:测试的话,先写一个index.jsp页面,页面代码如下所示:
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <%@ taglib prefix="s" uri="/struts-tags"%>
5 <%
6 //获取绝对路径路径 :路径path
7 String path = request.getContextPath();
8 //基本路径:http://localhost:8080/
9 String basePath = request.getScheme() +"://"
10 + request.getServerName()
11 +":" +request.getServerPort() + path + "/";
12 //保存到session中
13 session.setAttribute("basePath", basePath);
14 %>
15
16 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
17 <html>
18 <head>
19 <base href="<%=basePath %>" />
20 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
21 <title>测试crm</title>
22 </head>
23 <body>
24
25 <a href="${basePath }user/queryById.action?userId=1">点击查看个人信息</a>
26 <h1>个人信息如下所示:</h1>
27 <ul>
28 <li>用户编号:${user.userId }</li>
29 <li>用户姓名:${user.userName }</li>
30 <li>用户账号:${user.userAccount }</li>
31 <li>用户密码:${user.userPwd }</li>
32 <li>用户部门:${user.dept.deptName }</li>
33 </ul>
34
35
36
37 </body>
38 </html>
11:页面点击超链接之后访问到struts2的action层,下面先给出action层的代码;
1 package com.bie.action;
2
3 import org.apache.struts2.convention.annotation.Action;
4 import org.apache.struts2.convention.annotation.Namespace;
5 import org.apache.struts2.convention.annotation.ParentPackage;
6 import org.apache.struts2.convention.annotation.Result;
7 import org.springframework.beans.factory.annotation.Autowired;
8
9 import com.bie.po.User;
10 import com.bie.service.UserInfoService;
11 import com.opensymphony.xwork2.ActionContext;
12 import com.opensymphony.xwork2.ActionSupport;
13
14 /**
15 * @author 作者:别先生
16 * @version 创建时间:2017年6月8日 下午4:27:30
17 * 类说明
18 */
19 @ParentPackage("struts-default")
20 @Namespace("/user")
21 public class UserAction extends ActionSupport{
22
23 private static final long serialVersionUID = 1L;
24
25 //自动注入到ioc容器中
26 @Autowired
27 private UserInfoService userInfoService;
28
29 private int id;
30 public void setId(int id) {
31 this.id = id;
32 }
33 public int getId() {
34 return id;
35 }
36
37 @Action(
38 value = "queryById",
39 results = {
40 @Result(name="success",location="/index.jsp")
41 }
42 )
43 public String queryById(){
44
45 //调用service层的方法进行查询
46 User user = userInfoService.queryById(id);
47
48 //将查询的信息保存到session中
49 ActionContext.getContext().getSession().put("user", user);
50
51 return "success";
52 }
53
54
55 }
12:数据传输到action中,action对数据进行封装之后传到service层进行数据业务逻辑处理,这里写一下service层的代码;对service层的代码和dao层的代码先写接口,然后再写实现接口的类;
1 package com.bie.service;
2
3 import com.bie.po.User;
4
5 /**
6 * @author 作者:别先生
7 * @version 创建时间:2017年6月8日 下午3:43:03
8 * 类说明
9 */
10
11 public interface UserInfoService {
12
13 /***
14 * 根据用户编号查询
15 * @param id
16 * @return
17 */
18 public User queryById(int id);
19 }
1 package com.bie.service.impl;
2
3 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.stereotype.Service;
5
6 import com.bie.dao.UserInfoDao;
7 import com.bie.po.User;
8 import com.bie.service.UserInfoService;
9
10 /**
11 * @author 作者:别先生
12 * @version 创建时间:2017年6月8日 下午3:43:13
13 * 类说明
14 */
15 @Service
16 public class UserInfoServiceImpl implements UserInfoService{
17
18 //自动注入到ioc容器中
19 @Autowired
20 private UserInfoDao userInfoDao;
21
22 public User queryById(int id) {
23
24 //直接调用dao层的方法查询之后返回到action层
25 return userInfoDao.queryById(id);
26 }
27
28
29 }
13:数据传输到dao层之后开始和数据库里的数据表进行交互和操作;
1 package com.bie.dao;
2
3 import com.bie.po.User;
4
5 /**
6 * @author 作者:别先生
7 * @version 创建时间:2017年6月8日 下午4:35:20
8 * 类说明
9 */
10
11 public interface UserInfoDao {
12
13 /**
14 * 根据用户编号进行查询
15 * @param userId
16 * @return
17 */
18 public User queryById(int userId);
19 }
1 package com.bie.dao.impl;
2
3 import org.hibernate.SessionFactory;
4 import org.springframework.beans.factory.annotation.Autowired;
5 import org.springframework.stereotype.Repository;
6
7 import com.bie.dao.UserInfoDao;
8 import com.bie.po.User;
9
10 /**
11 * @author 作者:别先生
12 * @version 创建时间:2017年6月8日 下午4:35:46
13 * 类说明
14 */
15 @Repository
16 public class UserInfoDaoImpl implements UserInfoDao{
17
18 //自动注入到ioc容器中
19 @Autowired
20 private SessionFactory sessionFactory;
21
22 public User queryById(int id) {
23
24 User user = (User) sessionFactory.getCurrentSession().get(User.class, id);
25
26 return user;
27 }
28
29 }
演示效果如下所示:
ssh注解版框架搭建先到这吧,以后有机会再深学吧。时间过的挺快的,马上就该出去找工作了......