Maven SSH

来源:互联网 发布:java 网络编程 pdf在线 编辑:程序博客网 时间:2024/05/17 04:09

一、新建maven项目

 

 

选中maven-aechetype-webapp

group Id一般为公司域 ;Artifact Id相当于项目名称 ;version不需要更改;Package不使用默认,手动清空

Finish

项目结构如图 报错是因为没有加入servlet API 暂时不用管。

二、配置pom.xml

复制代码
  1    <properties>  2          <!-- 文件拷贝编码 -->  3         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  4         <!-- 输出编码 -->  5         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>  6         <!-- 编译编码 -->  7         <maven.compiler.encoding>UTF-8</maven.compiler.encoding>  8    </properties>  9       <dependencies> 10         <!-- log4j 日志 --> 11         <dependency> 12             <groupId>log4j</groupId> 13             <artifactId>log4j</artifactId> 14             <version>1.2.17</version> 15         </dependency> 16         <!-- servlet API --> 17         <dependency> 18             <groupId>javax.servlet</groupId> 19             <artifactId>javax.servlet-api</artifactId> 20             <version>3.1-b09</version> 21             <scope>provided</scope> 22         </dependency> 23         <!-- MySQL驱动 --> 24         <dependency> 25             <groupId>mysql</groupId> 26             <artifactId>mysql-connector-java</artifactId> 27             <version>5.1.24</version> 28         </dependency> 29         <!-- mchange C3P0 数据源 --> 30         <dependency> 31             <groupId>com.mchange</groupId> 32             <artifactId>c3p0</artifactId> 33             <version>0.9.5-pre2</version> 34         </dependency> 35         <!-- junit --> 36         <dependency> 37             <groupId>junit</groupId> 38             <artifactId>junit</artifactId> 39             <version>4.11</version> 40             <scope>test</scope> 41         </dependency> 42         <!-- fastjson --> 43         <dependency> 44             <groupId>com.alibaba</groupId> 45             <artifactId>fastjson</artifactId> 46             <version>1.1.29</version> 47         </dependency> 48         <!-- sf.json --> 49         <dependency> 50             <groupId>net.sf.json-lib</groupId> 51             <artifactId>json-lib</artifactId> 52             <version>2.4</version> 53             <classifier>jdk15</classifier><!--指定jdk版本 --> 54         </dependency> 55         <!-- struts2 --> 56         <dependency> 57             <groupId>org.apache.struts</groupId> 58             <artifactId>struts2-core</artifactId> 59             <version>2.3.14</version> 60             <exclusions> 61                 <exclusion> 62                     <groupId>javassist</groupId> 63                     <artifactId>javassist</artifactId> 64                 </exclusion> 65             </exclusions> 66         </dependency> 67         <dependency> 68             <groupId>org.apache.struts</groupId> 69             <artifactId>struts2-spring-plugin</artifactId> 70             <version>2.3.14</version> 71         </dependency> 72         <dependency> 73             <groupId>org.apache.struts</groupId> 74             <artifactId>struts2-convention-plugin</artifactId> 75             <version>2.3.14</version> 76         </dependency> 77         <!-- spring --> 78         <dependency> 79             <groupId>org.springframework</groupId> 80             <artifactId>spring-core</artifactId> 81             <version>3.2.2.RELEASE</version> 82         </dependency> 83         <dependency> 84             <groupId>org.springframework</groupId> 85             <artifactId>spring-context</artifactId> 86             <version>3.2.2.RELEASE</version> 87         </dependency> 88         <dependency> 89             <groupId>org.springframework</groupId> 90             <artifactId>spring-context-support</artifactId> 91             <version>3.2.2.RELEASE</version> 92         </dependency> 93         <dependency> 94             <groupId>org.springframework</groupId> 95             <artifactId>spring-jdbc</artifactId> 96             <version>3.2.2.RELEASE</version> 97         </dependency> 98         <dependency> 99             <groupId>org.springframework</groupId>100             <artifactId>spring-beans</artifactId>101             <version>3.2.2.RELEASE</version>102         </dependency>103         <dependency>104             <groupId>org.springframework</groupId>105             <artifactId>spring-web</artifactId>106             <version>3.2.2.RELEASE</version>107         </dependency>108         <dependency>109             <groupId>org.springframework</groupId>110             <artifactId>spring-expression</artifactId>111             <version>3.2.2.RELEASE</version>112         </dependency>113         <dependency>114             <groupId>org.springframework</groupId>115             <artifactId>spring-orm</artifactId>116             <version>3.2.2.RELEASE</version>117         </dependency>118         <!-- aspectjweaver -->119         <dependency>120             <groupId>org.aspectj</groupId>121             <artifactId>aspectjweaver</artifactId>122             <version>1.7.2</version>123         </dependency>124         <!-- hibernate -->125         <dependency>126             <groupId>org.hibernate</groupId>127             <artifactId>hibernate-core</artifactId>128             <version>4.2.0.Final</version>129         </dependency>130     </dependencies>
复制代码

保存,Maven会自动联网去下载所有需要的jar包,只写jar的名字,不用记住,只要去Maven中央仓库去搜索,Maven中央仓库地址:http://search.maven.org/完成之后,多了很多jar,并且都放到了配置的本地仓库中,以后要再使用相同版本的jar时候,就不需要联网下载了。

 三、修改项目结构

因为构建的MSSH项目的结构并不是一个标准的Maven结构,我们需要手动新建几个Source Folder

这是标准的maven项目结构

src/main/java:存放java源文件

src/main/resources:存放项目配置文件,如spring.xml,hibernate.cfg.xml。。。

src/test/java:存放test的java文件

src/test/resources:存放test时候所需的配置文件

 

配置Source Folder的output folder

同步项目的jdk版本

设置web.xml的路径

further configuration available若没有出现 可以先去掉dynamic web module的勾 apply之后再打上勾 就会出现此选项 设置路径为src/main/webapp

四、编写配置文件

web.xml

复制代码
 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_3_0.xsd" version="3.0"> 3   <display-name></display-name> 4    5   <!-- Spring ApplicationContext配置文件的路径,可使用通配符,多个路径用,号分隔 此参数用于后面的Spring Context  6         Loader --> 7   <context-param> 8     <param-name>contextConfigLocation</param-name> 9     <param-value>classpath:spring.xml,classpath:spring-hibernate.xml</param-value>10   </context-param>11   12   <!-- spring 监听器 -->13   <listener>14     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>15   </listener>16   17   <!-- Filter 定义 -->18   <!-- Character Encoding filter -->19   <filter>20     <filter-name>encodingFilter</filter-name>21     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>22     <init-param>23       <param-name>encoding</param-name>24       <param-value>UTF-8</param-value>25     </init-param>26   </filter>27   <filter-mapping>28     <filter-name>encodingFilter</filter-name>29     <url-pattern>/*</url-pattern>30   </filter-mapping>31   <!--Hibernate的session丢失解决方法 -->32   <filter>33     <filter-name>openSessionInView</filter-name>34     <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>35   </filter>36   <filter-mapping>37     <filter-name>openSessionInView</filter-name>38     <url-pattern>/*</url-pattern>39   </filter-mapping>40   41   <!-- struts2 filter -->42   <filter>43     <filter-name>struts2</filter-name>44     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>45   </filter>46   <filter-mapping>47     <filter-name>struts2</filter-name>48     <url-pattern>/*</url-pattern>49   </filter-mapping>50   51   52   <welcome-file-list>53     <welcome-file>login.jsp</welcome-file>54   </welcome-file-list>55 </web-app>
复制代码

database.properties

复制代码
hibernate.dialect=org.hibernate.dialect.MySQLDialectdriverClassName=com.mysql.jdbc.DrivervalidationQuery=SELECT 1url=jdbc:mysql://localhost:3306/mssh?useUnicode=true&characterEncoding=UTF-8username=rootpassword=roothibernate.hbm2ddl.auto=updatehibernate.show_sql=truehibernate.format_sql=false
复制代码

spring.xml

扫描com.shi包下的文件

复制代码
<?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"    xsi:schemaLocation="    http://www.springframework.org/schema/beans     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     http://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context-3.0.xsd    ">    <!-- 引入属性文件 -->    <context:property-placeholder location="classpath:database.properties" />    <!-- 自动扫描dao和service包(自动注入) -->    <context:component-scan base-package="com.shi" />    </beans>
复制代码

spring-hibernate.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:tx="http://www.springframework.org/schema/tx"    xmlns:aop="http://www.springframework.org/schema/aop"    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    ">    <!-- 使用C3P0数据源,MySQL数据库 -->    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"        destroy-method="close">        <!-- MySQL5 -->        <property name="driverClass" value="${driverClassName}"></property>        <property name="jdbcUrl" value="${url}"></property>        <property name="user" value="${username}"></property>        <property name="password" value="${password}"></property>        <property name="maxPoolSize" value="40"></property>        <property name="minPoolSize" value="1"></property>        <property name="initialPoolSize" value="1"></property>        <property name="maxIdleTime" value="20"></property>    </bean>    <!-- session工厂 -->    <bean id="sessionFactory"        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">        <property name="dataSource" ref="dataSource" />        <property name="packagesToScan" value="com.shi.*.entity" />        <property name="hibernateProperties">            <props>                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>                <prop key="hibernate.dialect">${hibernate.dialect}</prop>                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>                <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>            </props>        </property>    </bean>    <!-- 配置事务 -->    <bean name="txManager"        class="org.springframework.orm.hibernate4.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory"></property>    </bean>    <tx:annotation-driven transaction-manager="txManager" /></beans>
复制代码

struts.xml

使用零配置,扫描com.shi包下的文件

复制代码
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <!-- 将Action交给spring容器管理 -->    <constant name="struts.objectFactory" value="spring" />        <!-- 零配置 -->    <constant name="struts.convention.package.locators" value="shi" />    <constant name="struts.convention.package.locators.basePackage" value="com" />        <!-- 模式为开发模式,修改xml配置文件会自动加载,项目交付的时候设置为false,以免影响性能 -->    <constant name="struts.devMode" value="true" />    <constant name="struts.configuration.xml.reload" value="true" />    <!-- 字符集编码 -->    <constant name="struts.i18n.encoding" value="utf-8" />    <package name="defaultPackage" namespace="/" extends="struts-default">    </package></struts>
复制代码

 五、使用

复制代码
@Entity@Table(name = "DAE_USER")public class User extends ObjectEntity{        private static final long serialVersionUID = 1L;        private String name;    private String password;    private List<Role> roleList = new ArrayList<Role>();        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    // 多对多定义    @ManyToMany(fetch = FetchType.LAZY)    @JoinTable(name = "DAE_USER_ROLE", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })    public List<Role> getRoleList() {        return roleList;    }    public void setRoleList(List<Role> roleList) {        this.roleList = roleList;    }        public void addRole(Role role){        this.roleList.add(role);    }}
复制代码
User
复制代码
@Componentpublic class UserDao{    @Autowired    private SessionFactory sessionFactory;        public Session getCurrentSession(){        return sessionFactory.getCurrentSession();    }        public void save(User entity) {         getCurrentSession().save(entity);    }    public void update(User entity) {        getCurrentSession().update(entity);    }    public void delete(String id) {        getCurrentSession().delete(this.get(id));;    }        public User get(String id) {        String hql = "from User where id = '"+id+"'";        return (User) getCurrentSession().createQuery(hql).uniqueResult();    }    @SuppressWarnings("unchecked")    public List<User> getAll() {        String hql = "from User";        return getCurrentSession().createQuery(hql).list();    }}
复制代码
UserDao
复制代码
@Service@Transactionalpublic class UserManager extends ServiceManager<User> {    @Autowired    private UserDao userDao;        @Override    public void save(User entity) throws Exception {        if (entity != null) {            entity.initDate();            userDao.save(entity);        } else {            throw new Exception("保存出错");        }    }    @Override    public void update(User entity) throws Exception {        if (entity != null) {            entity.initDate();            userDao.update(entity);        } else {            throw new Exception("修改出错");        }    }        @Override    public void delete(String id) throws Exception {        userDao.delete(id);    }        @Override    public User get(String id) throws Exception {        return userDao.get(id);    }    @Override    public List<User> getAll() throws Exception {        return userDao.getAll();    }}
复制代码
UserManager
复制代码
public class UserAction extends CrudActionSupport<User> {    private static final long serialVersionUID = 1L;    @Autowired    private UserManager userManager;    @Autowired    private RoleManager roleManager;    private String id;    private User entity;    @Override    public User getModel() {        return entity;    }    @Override    protected void prepareModel() throws Exception {        if (!EmptyUtil.isEmpty(id)) {            entity = userManager.get(id);        } else {            entity = new User();        }    }    @Override    public String list() throws Exception {        List<User> userList = userManager.getAll();        for(User user :userList){            System.out.println(user.getName());        }        return SUCCESS;    }    @Override    public String input() throws Exception {        return "input";    }    @Override    public String save() throws Exception {        this.userManager.save(entity);        return null;    }    @Override    public String delete() throws Exception {        return null;    }        public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public User getEntity() {        return entity;    }    public void setEntity(User entity) {        this.entity = entity;    }}
复制代码