一、 创建Maven项目
1.新建Maven Object项目
File–>New -->Maven project
定义名称
- 配置maven
Window—>Preferences—>Maven
2. 导入pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.czxy</groupId>
<artifactId>ssh2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<!--2.确定项目使用版本号:编码、jdk版本、其他框架版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<druid.starter.version>1.1.9</druid.starter.version>
<mysql.version>5.1.32</mysql.version>
<!-- <failOnMissingWebXml>false</failOnMissingWebXml> -->
</properties>
<!-- 3.导入坐标 -->
<dependencies>
<!--struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>2.3.4.1</version>
</dependency>
<!-- struts注解核心包 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.3.4.1</version>
</dependency>
<!--spring配置 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!--aop使用的jar -->
<dependency>
<groupId> org.aspectj</groupId>
<artifactId> aspectjweaver</artifactId>
<version> 1.8.7</version>
</dependency>
<!--SpringWeb -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!--c3p0 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.6.Final</version>
</dependency>
<!--Spring-ORM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!-- struts2整合spring -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.4.1</version>
</dependency>
<!--jta的jar包 -->
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
</project>
- 配置Tomcat
4.项目结构图
二、配置环境
1.配置Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<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_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>ssh</display-name>
<!-- 配置Spring框架核心的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 该路径以webRoot作为根路径 -->
<param-value>classpath:application.xml</param-value>
</context-param>
<!-- 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>
</web-app>
2.创建application.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
">
<!--
class的值是包名.类名 ④scope="prototype"是非单例,但一定要写这句代码,记住有这回事就行 -->
<bean id="userAction" class="com.czxy.action.UserAction" scope="prototype">
<!-- ①name的值是要注入的变量名 ②ref是引用类的类名,name为“is”的变量引用的是myIndexService的值 -->
<property name="userService" ref="userService" />
</bean>
<!-- myIndexService = new ssh.service.IndexServiceImpl() id为myIndexService的bean对应项目中的IndexService类 -->
<bean id="userService" class="com.czxy.service.UserService" scope="prototype">
<!-- name为id的变量引用的是myIndexDao的值 -->
<property name="userDao" ref="userDao" />
</bean>
<bean id="userDao" class="com.czxy.dao.UserDao" scope="prototype">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource2"/>
<property name="hibernateProperties" >
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
</props>
</property>
<!-- <property name="packagesToScan" value="com.czxy.domain"/>-->
<property name="mappingLocations" value="classpath:com/czxy/domain/*.hbm.xml"/>
</bean>
<!-- 配置连接池 -->
<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/test"/>
</bean>
<!-- hibernate的事务管理
1.确定使用的是那个事务管理器,采用的hibernate的,hibernateTransactionManager
2.配置通知,明确哪些方法,去和进行事务管理
3.配置切面,确定哪些 类上使用通知
-->
<!-- 确定事务管理器 -->
<bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置通知 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*"/>
<tx:method name="update*"/>
<tx:method name="delete*"/>
<tx:method name="findAll*" read-only="true"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置切面 -->
<aop:config>
<aop:pointcut id="myPointCut" expression="execution(* com.czxy.service..*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="myPointCut"/>
</aop:config>
</beans>
3.创建strtus.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>
<package name="user" extends="struts-default" namespace="/">
<!-- 配置user -->
<action name="user" class="com.czxy.action.UserAction" method="toLogin">
<!-- 配置result -->
<result name="success">/user.jsp</result>
</action>
</package>
</struts>
三、创建类
1.User类
package com.czxy.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="tb_user")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String name;
private String mobile;
private String email;
private String password;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(Integer id, String name, String mobile, String email, String password) {
super();
this.id = id;
this.name = name;
this.mobile = mobile;
this.email = email;
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", mobile=" + mobile + ", email=" + email + ", password="
+ password + "]";
}
}
2.Action类(进行简单的测试,先不写其他类了)
package com.czxy.action;
import java.util.List;
import com.czxy.domain.User;
import com.czxy.service.UserService;
public class UserAction{
private UserService userService;
public String toLogin(){
System.out.println("123");
return "success";
}
}
3.*.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping package="com.czxy.domain">
<!-- 标识一个类的xml映射,name为类名,table为表名 -->
<class name="User" table="tb_user">
<!-- 主键的设置,generator标识主键生成方式,因为native便于数据库的移植所以.嘿嘿!你懂的 -->
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
<!-- 这里配了该类一个属性街道名称 name属性字段,column,数据库对应列 -->
<property name="name" type="string" column="name" />
<property name="mobile" type="string" column="mobile" />
<property name="email" type="string" column="email" />
<property name="password" type="string" column="password" />
</class>
</hibernate-mapping>
4.index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
<form action="user" method="post">
用户名:<input type="text" name="name" id="name" value="" /> 密码:<input
type="password" name="pwd" id="password" value="" /> <input
type="submit" value="登录">
</form>
</body>
</html>
三、测试
1.页面访问
点击登录
2.控制台