struts2+hibernate+spring配置版框架搭建以及简单测试(方便脑补)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补; 1:File--->New--->Other--->Maven--->Maven Project--->Next(之后界面如下所示:) --->Next(点击next之后出现如下界...

为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补;

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的时候都配置过,这个自己下去脑补吧;

  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_xml</artifactId>
  6   <packaging>war</packaging>
  7   <version>0.0.1-SNAPSHOT</version>
  8   <name>ssh_xml 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         <opensymphony-version>2.4.2</opensymphony-version>
 23         <freemarker-version>2.3.9</freemarker-version>
 24         <c3p0-version>0.9.1.2</c3p0-version>
 25         <commons-collections-version>1.0</commons-collections-version>
 26         <commons-fileupload-version>1.2.2</commons-fileupload-version>
 27         <org.apache.commons-version>3.1</org.apache.commons-version>
 28         <commons-codec-version>1.6</commons-codec-version>
 29         <dom4j-version>1.6.1</dom4j-version>
 30         <javax.servlet-version>1.2</javax.servlet-version>
 31         <aspectjweaver-version>1.6.6</aspectjweaver-version>
 32         <slf4j-log4j12-version>1.6.6</slf4j-log4j12-version>
 33         <log4j-version>1.2.16</log4j-version>
 34         <javax.servlet-jsp-version>2.0</javax.servlet-jsp-version>
 35         <cglib-version>2.2.2</cglib-version>
 36         <slf4j-api-version>1.6.6</slf4j-api-version>
 37         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 38     </properties>
 39     <dependencies>
 40         <!-- 配置 junit4.8.2 -->
 41         <dependency>
 42             <groupId>junit</groupId>
 43             <artifactId>junit</artifactId>
 44             <version>${junit-version}</version>
 45             <type>jar</type>
 46         </dependency>
 47         <!-- 配置 spring -->
 48         <dependency>
 49             <groupId>org.springframework</groupId>
 50             <artifactId>spring-core</artifactId>
 51             <version>${org.springframework-version}</version>
 52         </dependency>
 53         <dependency>
 54             <groupId>org.springframework</groupId>
 55             <artifactId>spring-web</artifactId>
 56             <version>${org.springframework-version}</version>
 57         </dependency>
 58         <dependency>
 59             <groupId>org.springframework</groupId>
 60             <artifactId>spring-test</artifactId>
 61             <version>${org.springframework-version}</version>
 62         </dependency>
 63         <dependency>
 64             <groupId>org.springframework</groupId>
 65             <artifactId>spring-aspects</artifactId>
 66             <version>${org.springframework-version}</version>
 67         </dependency>
 68         <dependency>
 69             <groupId>org.springframework</groupId>
 70             <artifactId>spring-context-support</artifactId>
 71             <version>${org.springframework-version}</version>
 72         </dependency>
 73         <dependency>
 74             <groupId>org.springframework</groupId>
 75             <artifactId>spring-web</artifactId>
 76             <version>${org.springframework-version}</version>
 77         </dependency>
 78 
 79         <dependency>
 80             <groupId>org.springframework</groupId>
 81             <artifactId>spring-webmvc</artifactId>
 82             <version>${org.springframework-version}</version>
 83         </dependency>
 84         <dependency>
 85             <groupId>org.springframework</groupId>
 86             <artifactId>spring-jdbc</artifactId>
 87             <version>${org.springframework-version}</version>
 88         </dependency>
 89         <dependency>
 90             <groupId>org.springframework</groupId>
 91             <artifactId>spring-tx</artifactId>
 92             <version>${org.springframework-version}</version>
 93         </dependency>
 94         <dependency>
 95             <groupId>org.springframework</groupId>
 96             <artifactId>spring-instrument</artifactId>
 97             <version>${org.springframework-version}</version>
 98         </dependency>
 99         <dependency>
100             <groupId>org.springframework</groupId>
101             <artifactId>spring-instrument-tomcat</artifactId>
102             <version>${org.springframework-version}</version>
103         </dependency>
104         
105         <dependency>  
106             <groupId>org.springframework</groupId>  
107             <artifactId>spring-orm</artifactId>  
108             <version>${org.springframework-version}</version>  
109         </dependency>
110         <!--springmvc 转换为 Json -->
111         <dependency>
112             <groupId>org.codehaus.jackson</groupId>
113             <artifactId>jackson-mapper-asl</artifactId>
114             <version>${jackson-mapper-asl-version}</version>
115         </dependency>
116         <dependency>
117             <groupId>org.codehaus.jackson</groupId>
118             <artifactId>jackson-core-asl</artifactId>
119             <version>${jackson-core-asl-version}</version>
120         </dependency>
121         <!--配置 freemarker -->
122         <dependency>
123             <groupId>freemarker</groupId>
124             <artifactId>freemarker</artifactId>
125             <version>${freemarker-version}</version>
126         </dependency>
127         
128         <!-- jdbc driver -->
129         <dependency>
130             <groupId>mysql</groupId>
131             <artifactId>mysql-connector-java</artifactId>
132             <version>${mysql-connector-java-version}</version>
133         </dependency>
134         <!-- connect pool with c3p0 -->
135         <dependency>
136             <groupId>c3p0</groupId>
137             <artifactId>c3p0</artifactId>
138             <version>${c3p0-version}</version>
139         </dependency>
140 
141         <dependency>
142             <groupId>commons-fileupload</groupId>
143             <artifactId>commons-fileupload</artifactId>
144             <version>${commons-fileupload-version}</version>
145         </dependency>
146 
147         <dependency>
148             <groupId>org.apache.commons</groupId>
149             <artifactId>commons-lang3</artifactId>
150             <version>${org.apache.commons-version}</version>
151         </dependency>
152 
153         <dependency>
154             <groupId>commons-codec</groupId>
155             <artifactId>commons-codec</artifactId>
156             <version>${commons-codec-version}</version>
157         </dependency>
158         <!-- analyze xml use dom4j -->
159         <dependency>
160             <groupId>dom4j</groupId>
161             <artifactId>dom4j</artifactId>
162             <version>${dom4j-version}</version>
163         </dependency>
164         <!-- about servlet -->
165         <dependency>
166             <groupId>javax.servlet</groupId>
167             <artifactId>jstl</artifactId>
168             <version>${javax.servlet-version}</version>
169         </dependency>
170 
171 
172         <dependency>
173             <groupId>taglibs</groupId>
174             <artifactId>standard</artifactId>
175             <version>1.1.2</version>
176         </dependency>
177         <dependency>
178             <groupId>javax.servlet</groupId>
179             <artifactId>javax.servlet-api</artifactId>
180             <version>3.0.1</version>
181             <scope>provided</scope>
182         </dependency>
183         <dependency>
184             <groupId>org.slf4j</groupId>
185             <artifactId>slf4j-log4j12</artifactId>
186             <version>1.6.6</version>
187             <scope>provided</scope>
188         </dependency>
189         <dependency>
190             <groupId>log4j</groupId>
191             <artifactId>log4j</artifactId>
192             <version>1.2.17</version>
193         </dependency>
194 
195         <dependency>
196             <groupId>org.slf4j</groupId>
197             <artifactId>slf4j-api</artifactId>
198             <version>1.6.6</version>
199         </dependency>
200         <dependency>
201             <groupId>javax.activation</groupId>
202             <artifactId>activation</artifactId>
203             <version>1.1.1</version>
204         </dependency>
205 
206         <!-- memcached -->
207         <dependency>
208             <groupId>com.google.code.maven-play-plugin.spy</groupId>
209             <artifactId>memcached</artifactId>
210             <version>2.4.2</version>
211         </dependency>
212         <dependency>
213             <groupId>cglib</groupId>
214             <artifactId>cglib</artifactId>
215             <version>${cglib-version}</version>
216         </dependency>
217         <dependency>
218             <groupId>net.fckeditor</groupId>
219             <artifactId>java-core</artifactId>
220             <version>2.6</version>
221         </dependency>
222         <dependency>
223             <groupId>org.json</groupId>
224             <artifactId>json</artifactId>
225             <version>20131018</version>
226         </dependency>
227       
228         <dependency>
229             <groupId>com.sun.jersey</groupId>
230             <artifactId>jersey-client</artifactId>
231             <version>1.18.1</version>
232         </dependency>
233         <dependency>
234             <groupId>jsptags</groupId>
235             <artifactId>pager-taglib</artifactId>
236             <version>2.0</version>
237         </dependency>
238 
239         <dependency>
240             <groupId>net.sourceforge.jexcelapi</groupId>
241             <artifactId>jxl</artifactId>
242             <version>2.6.10</version>
243         </dependency>
244 
245         <dependency>
246             <groupId>opensymphony</groupId>
247             <artifactId>oscache</artifactId>
248             <version>2.4.1</version>
249         </dependency>
250         <dependency>
251             <groupId>javax.servlet</groupId>
252             <artifactId>servlet-api</artifactId>
253             <version>2.4</version>
254             <scope>provided</scope>
255         </dependency>
256         
257         <dependency>
258             <groupId>org.apache.struts</groupId>
259             <artifactId>struts2-core</artifactId>
260             <version>2.3.8</version>
261             <exclusions>
262                 <exclusion>
263                     <artifactId>javassist</artifactId>
264                         <groupId>javassist</groupId>
265                 </exclusion>
266             </exclusions>
267         </dependency>
268         
269         <!-- spring和struts之间的联系 -->
270         <dependency>  
271             <groupId>org.apache.struts</groupId>  
272             <artifactId>struts2-spring-plugin</artifactId>  
273             <version>2.3.8</version>  
274         </dependency>
275         
276         <!-- struts2的注解 -->
277         <dependency>
278             <groupId>org.apache.struts</groupId>
279             <artifactId>struts2-convention-plugin</artifactId>
280         <version>2.3.8</version>
281         </dependency>
282 
283     
284     <dependency>
285         <groupId>org.hibernate</groupId>
286         <artifactId>hibernate-core</artifactId>
287         <version>4.1.7.Final</version>
288     </dependency>
289     <dependency>
290         <groupId>org.hibernate</groupId>
291         <artifactId>hibernate-ehcache</artifactId>
292         <version>4.1.7.Final</version>
293     </dependency>
294     <dependency>
295         <groupId>displaytag</groupId>
296         <artifactId>displaytag</artifactId>
297         <version>1.2</version>
298     </dependency>
299     
300   </dependencies>
301   
302   
303   
304   
305   <build>
306     <finalName>ssh_xml</finalName>
307   </build>
308   
309   
310 </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 </web-app>

 5:配置好之后就需要配置一下maven标准格式:在src/main下面创建一个java的文件夹,在src/下面创建一个test,在test下面创建java文件夹,配置如下所示:

 6:简单测试一下,将项目发布到tomcat中,启动tomcat,运行之后tomcat不报错,说明项目正常;

7:将spring的配置文件bean-common.xml配置文件放到src/main/resources下面即可(src/main/resources也是根目录):配置如下所示:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4     xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:context="http://www.springframework.org/schema/context"
 6     xmlns:aop="http://www.springframework.org/schema/aop"
 7     xmlns:tx="http://www.springframework.org/schema/tx"
 8     xsi:schemaLocation="http://www.springframework.org/schema/beans
 9          http://www.springframework.org/schema/beans/spring-beans.xsd
10           http://www.springframework.org/schema/context
11          http://www.springframework.org/schema/context/spring-context.xsd
12          http://www.springframework.org/schema/aop
13          http://www.springframework.org/schema/aop/spring-aop.xsd
14          http://www.springframework.org/schema/tx
15           http://www.springframework.org/schema/tx/spring-tx.xsd">
16 
17           
18 </beans>          

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4     xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:context="http://www.springframework.org/schema/context"
 6     xmlns:aop="http://www.springframework.org/schema/aop"
 7     xmlns:tx="http://www.springframework.org/schema/tx"
 8     xsi:schemaLocation="http://www.springframework.org/schema/beans
 9          http://www.springframework.org/schema/beans/spring-beans.xsd
10           http://www.springframework.org/schema/context
11          http://www.springframework.org/schema/context/spring-context.xsd
12          http://www.springframework.org/schema/aop
13          http://www.springframework.org/schema/aop/spring-aop.xsd
14          http://www.springframework.org/schema/tx
15           http://www.springframework.org/schema/tx/spring-tx.xsd">
16 
17 
18     <!-- 1. 连接池实例 -->
19     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
20         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssh"></property>
21         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
22         <property name="user" value="root"></property>
23         <property name="password" value="123456"></property>
24         <property name="initialPoolSize" value="3"></property>
25         <property name="maxPoolSize" value="6"></property>
26     </bean>
27     
28     <!-- 2. Spring管理SessionFactory 【全部配置都写到spring中】 -->
29     <!-- # 注入DataSource、 注入常用配置属性、映射配置属性 -->
30     <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
31         <property name="dataSource" ref="dataSource"></property>
32         <property name="hibernateProperties">
33             <props>
34                  <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
35                  <prop key="hibernate.show_sql">true</prop>
36                  <!-- <prop key="hibernate.hbm2ddl.auto">update</prop> -->
37             </props>
38         </property>
39         <property name="mappingLocations">
40             <list>
41                 <value>classpath:com/bie/po/*.hbm.xml</value>
42             </list>
43         </property>
44     </bean>
45     
46     <!-- 3. 事务相关配置 -->
47     <!-- 3.1 事务管理器类 -->
48     <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
49         <property name="sessionFactory" ref="sessionFactory"></property>
50     </bean>
51 
52     <!-- 3.2 事务增强(如何管理事务)-->
53     <tx:advice id="txAdvice" transaction-manager="txManager">
54         <tx:attributes>
55             <tx:method name="get*" read-only="true"/>
56             <tx:method name="find*" read-only="true"/>
57             <tx:method name="select*" read-only="true"/>
58             <tx:method name="*" read-only="false"/>
59         </tx:attributes>
60     </tx:advice>
61 
62     <!-- 3.3 Aop配置 = 切入点表达式(拦截目标对象,生成代理)  + 事务增强应用-->
63     <aop:config>
64         <aop:pointcut expression="execution(* com.bie.service.impl.*.*(..))" id="pointcut"/>
65         <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
66     </aop:config>
67      
68      
69     <!-- ioc容器注入 dao层的注入-->      
70     <bean id="adminDao" class="com.bie.dao.impl.AdminDaoImpl">
71         <property name="sessionFactory" ref="sessionFactory"></property>
72     </bean>
73     
74     <!-- Service 需要注入 Dao -->
75     <bean id="adminService" class="com.bie.service.impl.AdminServiceImpl">
76         <property name="adminDao" ref="adminDao"></property>
77     </bean>
78           
79     <!-- Service 需要注入 Dao -->
80     <bean id="adminAction" class="com.bie.action.AdminAction">
81         <property name="adminService" ref="adminService"></property>
82     </bean> 
83           
84 </beans>          

8:struts的配置文件struts.xml配置文件放到src/main/resources下面即可(src/main/resources也是根目录):配置如下所示:

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE struts PUBLIC
3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
4     "http://struts.apache.org/dtds/struts-2.3.dtd">
5 
6 <struts>
7     
8 
9 </struts>    
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7     
 8     <package name="admin_package" extends="struts-default">
 9     
10         <!-- Ation实例交给spring容器创建 -->
11         <action name="select_*" class="adminAction" method="{1}">
12             
13             <!-- 列表展示 -->
14             <result name="success">index.jsp</result>
15             
16         </action>
17     </package>    
18 
19 </struts>    

9:配置到第八步,基本结束,开始写代码,创建一个实体类Admin;如下所示:

 1 package com.bie.po;
 2 
 3 /** 
 4 * @author 作者:别先生
 5 * @version 创建时间:2017年6月10日 下午2:08:17 
 6 * 类说明 
 7 */
 8 
 9 public class Admin {
10 
11     private Integer adminId;//管理员编号
12     private String adminName;//管理员姓名
13     private String adminPwd;//管理员密码
14     
15     public Integer getAdminId() {
16         return adminId;
17     }
18     public void setAdminId(Integer adminId) {
19         this.adminId = adminId;
20     }
21     public String getAdminName() {
22         return adminName;
23     }
24     public void setAdminName(String adminName) {
25         this.adminName = adminName;
26     }
27     public String getAdminPwd() {
28         return adminPwd;
29     }
30     public void setAdminPwd(String adminPwd) {
31         this.adminPwd = adminPwd;
32     }
33     @Override
34     public String toString() {
35         return "Admin [adminId=" + adminId + ", adminName=" + adminName + ", adminPwd=" + adminPwd + "]";
36     }
37 
38     
39 }

10:创建好实体类之后配置一个hibernate的映射文件;Admin.hbm.xml,代码如下所示:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE hibernate-mapping PUBLIC 
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <!-- hibernate的实体类映射文件的配置,package包指出总包所在 -->
 7 <hibernate-mapping package="com.bie.po">
 8 
 9     <!-- class的name是实体类的名字,table是数据表名 -->
10     <class name="Admin" table="admin">
11         <id name="adminId">
12             <!-- native设置自增 -->
13             <generator class="native"></generator>
14         </id>
15         
16         <!-- 非主键的映射 -->
17         <property name="adminName" length="20"></property>
18         <property name="adminPwd" length="20"></property>
19     </class>
20 
21 </hibernate-mapping>    
22     

11:创建好实体类之后开始创建dao层的接口和实现类,如AdminDao接口和AdminDaoImpl实现类;

 1 package com.bie.dao;
 2 
 3 import java.util.List;
 4 
 5 import com.bie.po.Admin;
 6 
 7 /** 
 8 * @author 作者:别先生
 9 * @version 创建时间:2017年6月10日 下午2:25:01 
10 * 类说明 
11 */
12 
13 public interface AdminDao {
14 
15     /**
16      * 查询管理员的信息
17      * @param admin
18      * @return
19      */
20     public List<Admin> selectAdmin();
21 }
 1 package com.bie.dao.impl;
 2 
 3 import java.util.List;
 4 
 5 import org.hibernate.SessionFactory;
 6 
 7 import com.bie.dao.AdminDao;
 8 import com.bie.po.Admin;
 9 
10 /** 
11 * @author 作者:别先生
12 * @version 创建时间:2017年6月10日 下午2:25:15 
13 * 类说明 
14 */
15 
16 public class AdminDaoImpl implements AdminDao{
17 
18     //IOC容器注入sessionFactory对象
19     private SessionFactory sessionFactory;
20     public void setSessionFactory(SessionFactory sessionFactory) {
21         this.sessionFactory = sessionFactory;
22     }
23     
24     public List<Admin> selectAdmin() {
25         
26         List<Admin> list =  sessionFactory.getCurrentSession().createQuery(" from Admin ").list();
27         
28         return list;
29     }
30 
31     
32 }

12:创建好dao层接口和实现类之后开始创建service层的接口和实现类,如AdminService接口和AdminServiceImpl实现类;

 1 package com.bie.service;
 2 
 3 import java.util.List;
 4 
 5 import com.bie.po.Admin;
 6 
 7 /** 
 8 * @author 作者:别先生
 9 * @version 创建时间:2017年6月10日 下午2:29:20 
10 * 类说明 
11 */
12 
13 public interface AdminService {
14 
15     public List<Admin> selectAdmin();
16 }
 1 package com.bie.service.impl;
 2 
 3 import java.util.List;
 4 
 5 import com.bie.dao.AdminDao;
 6 import com.bie.po.Admin;
 7 import com.bie.service.AdminService;
 8 
 9 /** 
10 * @author 作者:别先生
11 * @version 创建时间:2017年6月10日 下午2:29:40 
12 * 类说明 
13 */
14 
15 public class AdminServiceImpl implements AdminService{
16 
17     //ioc容器注入
18     private AdminDao adminDao;
19     public void setAdminDao(AdminDao adminDao) {
20         this.adminDao = adminDao;
21     }
22     
23     public List<Admin> selectAdmin(){
24         
25         List<Admin> list = adminDao.selectAdmin();
26         
27         return list;
28     }
29 }

13:当写好service层之后开始写action层AdminAction,这里传递前台页面的参数;代码如下所示:

 1 package com.bie.action;
 2 
 3 import java.util.List;
 4 import java.util.Map;
 5 
 6 import org.apache.struts2.interceptor.RequestAware;
 7 
 8 import com.bie.po.Admin;
 9 import com.bie.service.AdminService;
10 import com.opensymphony.xwork2.ActionSupport;
11 
12 /** 
13 * @author 作者:别先生
14 * @version 创建时间:2017年6月10日 下午2:36:07 
15 * 类说明 
16 */
17 
18 public class AdminAction extends ActionSupport implements RequestAware{
19 
20     
21     private static final long serialVersionUID = 1L;
22 
23     //ioc容器注入
24     private AdminService adminService;
25     public void setAdminService(AdminService adminService) {
26         this.adminService = adminService;
27     }
28     
29     // 接收框架运行时候传入的代表request对象的map
30     private Map<String, Object> request;
31     public void setRequest(Map<String, Object> request) {
32         this.request = request;
33     }
34     
35     
36     //ioc容器注入
37     private Admin admin;
38     public void setAdmin(Admin admin) {
39         this.admin = admin;
40     }
41     public Admin getAdmin() {
42         return admin;
43     }
44     
45     public String selectAdmin(){
46         
47         List<Admin> list = adminService.selectAdmin();
48         
49         //将信息保存到request中
50         request.put("list", list);
51         
52         return "success";
53     }
54     
55 
56 }

14:当后台写完之后开始写前台测试页面:页面如下所示

 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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>主页显示管理员的信息</title>
 9 </head>
10 <body>
11 
12 <a href="select_selectAdmin.action">查询所有用户信息</a>
13 
14 <center>
15     <table cellspacing="20" cellpadding="20">
16         <tr>
17             <th>管理员编号</th>
18             <th>管理员姓名</th>
19             <th>管理员密码</th>
20         </tr>
21         <c:forEach items="${list }" var="list">
22         <tr>
23             <td>${list.adminId}</td>
24             <td>${list.adminName}</td>
25             <td>${list.adminPwd   }</td>
26         </tr>
27         </c:forEach>
28     </table>
29 </center>
30 
31 </body>
32 </html>

直接访问index.jsp页面,测试结果如下所示:

ssh配置版框架搭建先到这吧,以后有机会再深学吧。时间过的挺快的,马上就该出去找工作了......

增删改查功能日后有时间再写吧......

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
17天前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
21天前
|
测试技术 C# 数据库
C# 单元测试框架 NUnit 一分钟浅谈
【10月更文挑战第17天】单元测试是软件开发中重要的质量保证手段,NUnit 是一个广泛使用的 .NET 单元测试框架。本文从基础到进阶介绍了 NUnit 的使用方法,包括安装、基本用法、参数化测试、异步测试等,并探讨了常见问题和易错点,旨在帮助开发者有效利用单元测试提高代码质量和开发效率。
129 64
|
8天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
33 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1天前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
16 6
|
1天前
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
11 4
|
7天前
|
测试技术 API Android开发
探索软件测试中的自动化框架选择与实践####
本文深入探讨了软件测试领域内,面对众多自动化测试框架时,如何依据项目特性和团队需求做出明智选择,并分享了实践中的有效策略与技巧。不同于传统摘要的概述方式,本文将直接以一段实践指南的形式,简述在选择自动化测试框架时应考虑的核心要素及推荐路径,旨在为读者提供即时可用的参考。 ####
|
11天前
|
测试技术 Android开发 UED
探索软件测试中的自动化框架选择
【10月更文挑战第29天】 在软件开发的复杂过程中,测试环节扮演着至关重要的角色。本文将深入探讨自动化测试框架的选择,分析不同框架的特点和适用场景,旨在为软件开发团队提供决策支持。通过对比主流自动化测试工具的优势与局限,我们将揭示如何根据项目需求和团队技能来选择最合适的自动化测试解决方案。此外,文章还将讨论自动化测试实施过程中的关键考虑因素,包括成本效益分析、维护难度和扩展性等,确保读者能够全面理解自动化测试框架选择的重要性。
27 1
|
14天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
32 2
|
13天前
|
消息中间件 NoSQL Java
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
61 1