eclipse版本4以上自带maven插件
File-》New-》MavenProject-》Next
设置groupId ArtifactId
groupId 通常为 域名反写.项目名
ArtifactId 通常为 项目名-模块名
1.
右击项目名-》BuildPath-》Configure Build Path
将missing的文件夹移除(Remove)
右击项目名,新增移除的两个文件夹
src/main/java
src/test/java
2.
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网页上输入商品的名称和价格,添加到数据库中
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
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
http://localhost:8080/manager/text
admin
admin
9999
/webDemo
UTF-8
UTF-8
package
run
此处sturts.xml的配置 使得action对象的创建不是由struts2完成而是由spring来创建(既可通过struts2,也可通过spring)。官方推荐使用spring来创建
action对象的创建通过spring来创建时,有两点需要注意,
1.在spring的配置文件中(applicationContext.xml)需要手动注入Service对象
2. 在Struts2,action的class属性的值productAction为在spring中创建的action的id名
true
true
update
org.hibernate.dialect.MySQL5InnoDBDialect
Product.hbm.xml
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名字
jdbc.username=数据库用户名
jdbc.password=密码
根据自己的实际情况更改对应的数据库信息
hibernate会自动建表,库一定要存在,在cmd中使用 "create database 数据库名字;"建表 或者 使用数据库管理软件直接建表例如Navicat
#定义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
按照Hibernate插件,可根据实体类自动创建关系映射文件
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;
}
}
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来完成数据库访问。
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);
}
}
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;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
Insert title here
保存商品的页面
商品名称
商品价格
struts2
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
struts2
/*
addProduct.jsp
在pom.xml配置过插件,当运行package命令时,同时运行tomcat:run
运行前:数据库
在网页上输入数据:
点击添加按钮后,控制台输出 :
数据库更新后: