使用maven搭建ssh环境,不可不读的入门篇(完整案例)

一.创建maven项目
        eclipse版本4以上自带maven插件

        File-》New-》MavenProject-》Next

使用maven搭建ssh环境,不可不读的入门篇(完整案例)_第1张图片

 

设置groupId ArtifactId

groupId 通常为 域名反写.项目名

ArtifactId 通常为 项目名-模块名 

二.消除eclipse项目上的红叉
1.

使用maven搭建ssh环境,不可不读的入门篇(完整案例)_第2张图片

 

右击项目名-》BuildPath-》Configure Build Path

将Source里missing的文件夹移除(Remove) 

右击项目名,新增移除的两个文件夹

src/main/java

src/test/java

2.使用maven搭建ssh环境,不可不读的入门篇(完整案例)_第3张图片

The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 

这是由于未添加依赖servlet-api

此时在pom.xml中添加如下依赖


    com.hynnet
    javax.servlet-api
    3.1.0
    
    provided

pom.xml上右击-》run As-》Maven build..    install命令

发现该项目上的红叉消失了。

三.简单项目代码
项目目标:从jsp网页上输入商品的名称和价格,添加到数据库中

1.包结构

使用maven搭建ssh环境,不可不读的入门篇(完整案例)_第4张图片
还有一个addProduct.jsp在webApp目录下

2.pom.xml配置
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    4.0.0
    com.byf.webDemo
    webDemo
    war
    0.0.1-SNAPSHOT
    webDemo Maven Webapp
    http://maven.apache.org
    
    
       
        UTF-8
       
        2.5.10
        4.3.8.RELEASE
        5.1.7.Final
   

    
    
        
            junit
            junit
            4.10
            test
        

        
            com.hynnet
            javax.servlet-api
            3.1.0
            
            provided
        

 
 
    
        
       
            org.springframework
            spring-core
            ${spring.version}
       

       
       
            org.springframework
            spring-web
            ${spring.version}
       

        
         
       
            org.springframework
            spring-orm
            ${spring.version}
       

       
       
            org.apache.struts
            struts2-core
            ${struts.version}
       

       
       
            org.apache.struts
            struts2-spring-plugin
            ${struts.version}
       

       
       
            org.hibernate
            hibernate-core
            ${hibernate.version}
       

       
       
            mysql
            mysql-connector-java
            5.1.42
       

       
       
            com.mchange
            c3p0
            0.9.5
       

       
       
            org.aspectj
            aspectjweaver
            1.8.10
       

       
       
            org.slf4j
            slf4j-log4j12
            1.7.25
       

         
    

    
        webDemo
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2 
                
                    1.8
                    1.8
                

            

            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                                
                    http://localhost:8080/manager/text                
                    admin                                
                    admin
                    9999
                    /webDemo                            
                    UTF-8
                    UTF-8
                    
                

                
                    
                        package
                        
                            run
                        

                    

                

            

        

    


 
3.struts.xml

 
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

    
        
        
        

    

    
此处sturts.xml的配置 使得action对象的创建不是由struts2完成而是由spring来创建(既可通过struts2,也可通过spring)。官方推荐使用spring来创建

action对象的创建通过spring来创建时,有两点需要注意,

1.在spring的配置文件中(applicationContext.xml)需要手动注入Service对象


        
            
        

2. 在Struts2,action的class属性的值productAction为在spring中创建的action的id名

4.applicationContext.xml

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    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-4.3.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
       
       
       
       
            
            
            
            
                
                    true
                    true
                    update
                    org.hibernate.dialect.MySQL5InnoDBDialect
                

            

                
            
            
                
                    Product.hbm.xml
                

            

       

            
       
       
            
            
            
            
       

        
       
       
            
       

        
       
       
            
       

        
       
       
            
       

        
       
       
            
       

        
       
       

5.jdbc.properties
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名字
jdbc.username=数据库用户名
jdbc.password=密码
根据自己的实际情况更改对应的数据库信息

hibernate会自动建表,库一定要存在,在cmd中使用  "create database 数据库名字;"建表 或者 使用数据库管理软件直接建表例如Navicat

6.log4j.properties
#定义LOG输出级别  
log4j.rootLogger=INFO,Console,File  
#定义日志输出目的地为控制台  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.Target=System.out  
#可以灵活地指定日志输出格式,下面一行是指定具体的格式  
log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n  
 
#文件大小到达指定尺寸的时候产生一个新的文件  
log4j.appender.File = org.apache.log4j.RollingFileAppender  
#指定输出目录  
log4j.appender.File.File = logs/ssm.log  
#定义文件最大大小  
log4j.appender.File.MaxFileSize = 10MB  
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志  
log4j.appender.File.Threshold = ALL  
log4j.appender.File.layout = org.apache.log4j.PatternLayout  
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
7.Product.hbm.xml (Hibernate关系映射文件)

使用maven搭建ssh环境,不可不读的入门篇(完整案例)_第5张图片
按照Hibernate插件,可根据实体类自动创建关系映射文件


"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


   
       
           
           
       

       
           
       

       
           
       

   


 8. 创建实体类 Product.java
package com.byf.webDemo.domain;
/**
 * 商品实体
 */
public class Product {
    private Integer pid;
    private String pname;
    private Double pprice;
    public Integer getPid() {
        return pid;
    }
    public void setPid(Integer pid) {
        this.pid = pid;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public Double getPprice() {
        return pprice;
    }
    public void setPprice(Double pprice) {
        this.pprice = pprice;
    }
    
}
 9. 创建DAO类 ProductDao.java
package com.byf.webDemo.dao;
 
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
 
import com.byf.webDemo.domain.Product;
 
/**
 * 商品管理Dao
 * @author hp
 *
 */
public class ProductDao extends HibernateDaoSupport{
    public void save(Product product) {
        // TODO Auto-generated method stub
        System.out.println("DAO中的save方法调用了...");
        this.getHibernateTemplate().save(product);
    }
    
}
 

spring为hibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供如下两个方法,方便DAO的实现:   

 public final HibernateTemplate getHibernateTemplate()

 public final void setSessionFactory(SessionFactory sessionFactory)

其中,setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,

getHibernateTemplate方法则用来根据刚才的SessionFactory产生Session,最后生成HibernateTemplate来完成数据库访问。

10. 创建Service类 ProductService.java
package com.byf.webDemo.service;
/**
 * 商品管理的业务层类
 */
 
import org.springframework.transaction.annotation.Transactional;
 
import com.byf.webDemo.dao.ProductDao;
import com.byf.webDemo.domain.Product;
@Transactional
public class ProductService {
    // 业务层注入Dao的类
    private ProductDao productDao;
    
    public void setProductDao(ProductDao productDao) {
        this.productDao = productDao;
    }
    
    public void save(Product product) {
        System.out.println("Service方法中的 save方法执行了...");
        productDao.save(product);
    }
}
 11. 创建Action类 ProductAction.java
package com.byf.webDemo.action;
 
import com.byf.webDemo.domain.Product;
import com.byf.webDemo.service.ProductService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
 
public class ProductAction extends ActionSupport implements ModelDriven{
    // 模型驱动使用的类
    private Product product = new Product();
    @Override
    public Product getModel() {
        // TODO Auto-generated method stub
        return product;
    }
    
    // Struts和Spring整合过程中按名称自动注入的业务层类
    private ProductService productService;
    
    public void setProductService(ProductService productService) {
        this.productService = productService;
    }
    
    /**
     * 保存商品的执行方法:save
     */
    public String save() {
        System.out.println("Action中的save 方法执行了...");
        productService.save(product);
        return NONE;
    }
}
12. addProduct.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>




Insert title here


保存商品的页面




    
        
        
    
        
        
    
        
    
商品名称 
    
商品价格 
    



你可能感兴趣的:(SSH)