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

一.创建maven项目

        eclipse版本4以上自带maven插件

        File-》New-》MavenProject-》Next

 

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

设置groupId ArtifactId

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

ArtifactId 通常为 项目名-模块名 

二.消除eclipse项目上的红叉

1.

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

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

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

将missing的文件夹移除(Remove) 

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

src/main/java

src/test/java

2.

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

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.包结构

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

2.pom.xml配置


	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





	
		
		
		
	
	

此处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



        
        
        
        
        	
        	
        	
        	
        		
        			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关系映射文件)

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

按照Hibernate插件,可根据实体类自动创建关系映射文件





    
        
            
            
        
        
            
        
        
            
        
    

 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 setPrice(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


保存商品的页面

商品名称
商品价格

13. web.xml



  
  	struts2
  	org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
  
  
  
  	org.springframework.web.context.ContextLoaderListener
  
  
    
        contextConfigLocation
        classpath:applicationContext.xml
    
  
  
    struts2
    /*
  
  
    addProduct.jsp
   

 四.运行项目

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

在pom.xml配置过插件,当运行package命令时,同时运行tomcat:run

运行前:数据库

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

在网页上输入数据: 

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

点击添加按钮后,控制台输出 :

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

数据库更新后:

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

 终于大功告成啦!!

你可能感兴趣的:(java,ssh)