spring整合web项目


在服务器启动时候加载spring配置文件:

需要在在当前的WEB-INFO下面的web.xml文件进行配置


<context-param> 

 

  <param-name>contextConfigLocation</param-name> 

 

  <param-value>classpath:bean.xml</param-value> 

 

  </context-param> 

 
<!-- struts需要进行监听器设置 -->
 
 
 
 

  <filter> 

 

  <filter-name>Struts</filter-name> 

 

  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 

 

  </filter> 

 

  <filter-mapping> 

 

  <filter-name>Struts</filter-name> 

 

  <url-pattern>*.action</url-pattern> 

 

  </filter-mapping> 

 
 
 
 
 
 
 
!-- 配置监听器 -->
 
配置监听器需要导入spring相应的webjar包
 

  <listener> 

 

  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 

 

  </listener> 

 
 
 
 
2.aop注解操作
 
首先定义两个类
 

  public class Book{ 

 

  public void add(){ 

 

  System.out.println("add..................."); 

 

  } 

 

  } 

 
//MyBook是被增强的类
 

  public class MyBook{ 

 

  public void before1(){ 

 

  System.out.println("before1......."); 

 

  } 

 

  } 

 
2.1导入项目所需要的springjar包以及aspecj的jar包
 
 1.配置spring的核心文件(.xml)
 
 2. <!-- 开启aop的扫描 -->
 

  <aop:aspectj-autoproxy></aop:aspectj-autoproxy> 

 
 3.在被增强的类上面加上注解@Aspect 它所对应的就是spring核心配置里面开启aop扫描的代码<aop:aspectj-autoproxy></aop:aspectj-autoproxy> 

 
 4.在这个类上面需要增强那个方法就在上面注解如前置增强:@Before(value="execution(* cn.zhoubiao.aop.Book.*(..))") 

 
 
 
 
2.2 Spring的jdbc模板操作
 
 1.spring的一站式框架 利用spring jdbcTemplate来进行增删改查操作
 
 首先在WEB-INFO下面导入spring-jdbc-5.0.5.RELEASE.jar和spring-tx-5.0.5.RELEASE.jar以及mysql驱动的jar包以及依赖的spring的jar包 
 
 2.创建一个测试类来进行测试(增)
 

  public class spring_jdbc{ 

 

  @Test 

 

  public void add(){ 

 
 //设置驱动信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource (); 

 
 //加载数据库驱动文件
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
 //数据库连接地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//数据库连接用户和密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc模板对象
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//创建一个sql语句模板
 

  String sql = "insert into user values(?,?)"; 

 
/通过调用jdbcTemplate的方法来向数据库插入数据
 

  int rows = jdbcTemplate.update(sql,"周標","10000");//返回值是int类型 

 

  System.out.println(rows); 

 
 
 
 

  } 

 

  } 

 
**修改表的操作:
 

  public class spring_jdbc{ 

 

  @Test 

 

  public void update(){ 

 
//设置驱动信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载数据库驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库的连接地址
 

  dataSource.setUrl("com:mysql://localhost:3306/666"); 

 
//设置数据库的用户和密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc的模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);//把dataSource传进来 

 
//给出sql语句模板
 

  String sql = "update login_1 set password=? where username=?"; 

 
//调用jdbc模板的功能
 

  int rows = jdbcTemplate.update(sql,"123321","wangwu");//返回值是int类型 

 

  System.out.println(rows); 

 

  } 

 

  } 

 
**删除表的记录数据
 

  public class spring_jdbc{ 

 

  @Test 

 

  public void delete1(){ 

 
//设置数据库的信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载数据库驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库的地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//设置数据库的用户名和密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//给出jdbc模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//创建sql语句模板
 
 
 
 

  String sql = "delete from login_1 where username=?"; 

 
//调用jdbc模板功能
 

  int rows = jdbcTemplate.update(sql,"wangwu"); 

 

  System.out.println(rows); 

 
 
 
 

  } 

 

  } 

 
**查询总记录数
 

  public class spring_jdbc_find{ 

 

  public void find(){ 

 
//配置数据库信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载数据库驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库连接地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//设置数据库的密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//创建sql语句模板
 

  String sql = "select count(*)from login_1 "; 

 
//调用jdbc模板的功能
 
第一个参数就是给定的sql模板,第二个参数就是返回的类型 如果是String类型就是String.class
 

  System.out.println(rows); 

 

  } 

 

  } 

 
 
 
 
**查询某条记录的详细信息
 

  public class spring_jdbc_find2{ 

 

  @Test 

 

  public void testObject(){ 

 
//设置数据库信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库连接地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//设置数据库的密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//创建sql语句模板
 

  String sql = "select *from login_1 where username=?"; 

 
//调用jdbcTemplate方法
 
sql语句,第二个参数是接口,第三个参数是可变参数也就是你要操作的值
 

  System.out.println(user); 

 

  } 

 

  } 

 
 
 
 
//创建一个新的类实现 RowMapper接口
 

  class MyRowMapper RowMapper<User>{ 

 
//实现该类的一个方法
 

  public User mapRow(ResultSet rs,int num) throws SQLException{ 

 
//从结果集中得到数据
 

  String username = rs.getString("username"); 

 

  String password = rs.getString("password"); 

 
//把获取到数据封装到对象中去
 

  User user = new User(); 

 

  user.setUsername(username); 

 

  user.setPassword(password); 

 
 
 
 

  return user; 

 

  } 

 
 
 
 

  } 

 
 
 
 
**查询所有记录信息
 

  public class spring_jdbc_find3{ 

 

  @Test 

 

  public void testlist(){ 

 
//设置数据库信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载数据库驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//设置数据库密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//给出sql语句模板
 

  String sql = "select *from login_1"; 

 
//调用jdbcTemplate方法
 

  List<User>list = jdbcTemplate.query(sql,new MyRowMapper());//该方法返回的是一个List集合 

 

  System.out.println(list); 

 
 
 
 

  } 

 

  } 

 
 
 
 

  class MyRowMapper implements RowMapper{ 

 
//实现该类接口的方法
 

  public User mapRow(ResultSet rs,int num) throws SQLException{ 

 
//获取参数
 

  String username= rs.getString("username"); 

 

  String password=rs.getString("password"); 

 
//封装到对象
 

  User user= new User(); 

 

  user.setUsername(username); 

 

  user.setPassword(password); 

 

  return user; 

 
 
 
 

  } 

 

  } 

 

  } 

 
 
 
 
**spring核心配置文件配置c3p0连接池
 

  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 

 

  <property name="driverClass" value="com.mysql.jdbc.Driver"></property> 

 

  <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/666"></property> 

 

  <property name="user" value="root"></property> 

 

  <property name="password" value="root"></property> 

 

  </bean> 

 
 
 
 
**spring核心配置文件配置c3p0创建对象来实现增删改查
 
//首先创建一个UserService类
 

  public class UserService{ 

 
//现在我要使用UserDao的add方法那么就 封装该类对象
 

  private UserDao userDao; 

 
//由于是通过配置文件来进行操作的就使用setter方法
 

  public void setUserDao(UserDao userDao){ 

 

  this.userDao = userDao; 

 

  } 

 
//这里创建一个方法来调用dao里面的add方法
 

  public void add(){ 

 

  userDao.add(); 

 

  } 

 
 
 
 

  } 

 
//然后创建一个UserDao类
 

  public class UserDao{ 

 

  public void add(){ 

 
//然后配置spring核心配置文件
 
//配置好了就得到JdbcTemplate的对象
 

  private JdbcTemplate jdbcTemplate; 

 
//setter方法
 

  public void setJdbcTemplate(JdbcTemplate jdbcTemplate){ 

 

  this.jdbcTemplate = jdbcTemplate; 

 

  } 

 
//创建一个方法来向数据库插入一条数据
 

  public void add(){ 

 
//给出sql语句模板
 

  String sql = "insert into login_1 values(?,?)"; 

 
//调用JdbcTemplate方法
 

  jdbcTemplate.update(sql,"哈哈","1111"); 

 
//最后新建一个类来测试就可以了
 

  } 

 

  } 

 

  } 

 
 
 
 
<!-- 配置c3p0的连接池 -->
 
<!-- 注入属性 -->
 

  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 

 

  <property name="driverClass" value="com.mysql.jdbc.Driver"></property> 

 

  <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/666"></property> 

 

  <property name="user" value="root"></property> 

 

  <property name="password" value="root"></property> 

 

  </bean> 

 
//由于要操作UserService和UserDao两个类所以要进行配置
 

  <bean id="userService" class="cn.zhoubiao.c3p0.UserService"> 

 
//由于我们是在UserService里面操作UserDao类的方法所以需要注入属性
 

  <property name="userDao" ref="userDao"></property> 

 

  </bean> 

 

  <bean id="userDao" class=cn.zhoubiao.c3p0.UserDao"> 

 
//这里我们要使用JdbcTemplate的方法所以要注入该属性
 

  <property name="jdbcTemplate" ref="jdbcTemplate"></property> 

 
//创建JdbcTemplate对象
 

  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 

 
//把dataSource传入到jdbcTemplate模板中
 

  <property name="dataSource" ref="dataSource"></property> 

 

  </bean>
<context-param> 

 

  <param-name>contextConfigLocation</param-name> 

 

  <param-value>classpath:bean.xml</param-value> 

 

  </context-param> 

 
<!-- struts需要进行监听器设置 -->
 
 
 
 

  <filter> 

 

  <filter-name>Struts</filter-name> 

 

  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 

 

  </filter> 

 

  <filter-mapping> 

 

  <filter-name>Struts</filter-name> 

 

  <url-pattern>*.action</url-pattern> 

 

  </filter-mapping> 

 
 
 
 
 
 
 
!-- 配置监听器 -->
 
配置监听器需要导入spring相应的webjar包
 

  <listener> 

 

  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 

 

  </listener> 

 
 
 
 
2.aop注解操作
 
首先定义两个类
 

  public class Book{ 

 

  public void add(){ 

 

  System.out.println("add..................."); 

 

  } 

 

  } 

 
//MyBook是被增强的类
 

  public class MyBook{ 

 

  public void before1(){ 

 

  System.out.println("before1......."); 

 

  } 

 

  } 

 
2.1导入项目所需要的springjar包以及aspecj的jar包
 
 1.配置spring的核心文件(.xml)
 
 2. <!-- 开启aop的扫描 -->
 

  <aop:aspectj-autoproxy></aop:aspectj-autoproxy> 

 
 3.在被增强的类上面加上注解@Aspect 它所对应的就是spring核心配置里面开启aop扫描的代码<aop:aspectj-autoproxy></aop:aspectj-autoproxy> 

 
 4.在这个类上面需要增强那个方法就在上面注解如前置增强:@Before(value="execution(* cn.zhoubiao.aop.Book.*(..))") 

 
 
 
 
2.2 Spring的jdbc模板操作
 
 1.spring的一站式框架 利用spring jdbcTemplate来进行增删改查操作
 
 首先在WEB-INFO下面导入spring-jdbc-5.0.5.RELEASE.jar和spring-tx-5.0.5.RELEASE.jar以及mysql驱动的jar包以及依赖的spring的jar包 
 
 2.创建一个测试类来进行测试(增)
 

  public class spring_jdbc{ 

 

  @Test 

 

  public void add(){ 

 
 //设置驱动信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource (); 

 
 //加载数据库驱动文件
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
 //数据库连接地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//数据库连接用户和密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc模板对象
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//创建一个sql语句模板
 

  String sql = "insert into user values(?,?)"; 

 
/通过调用jdbcTemplate的方法来向数据库插入数据
 

  int rows = jdbcTemplate.update(sql,"周標","10000");//返回值是int类型 

 

  System.out.println(rows); 

 
 
 
 

  } 

 

  } 

 
**修改表的操作:
 

  public class spring_jdbc{ 

 

  @Test 

 

  public void update(){ 

 
//设置驱动信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载数据库驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库的连接地址
 

  dataSource.setUrl("com:mysql://localhost:3306/666"); 

 
//设置数据库的用户和密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc的模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);//把dataSource传进来 

 
//给出sql语句模板
 

  String sql = "update login_1 set password=? where username=?"; 

 
//调用jdbc模板的功能
 

  int rows = jdbcTemplate.update(sql,"123321","wangwu");//返回值是int类型 

 

  System.out.println(rows); 

 

  } 

 

  } 

 
**删除表的记录数据
 

  public class spring_jdbc{ 

 

  @Test 

 

  public void delete1(){ 

 
//设置数据库的信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载数据库驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库的地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//设置数据库的用户名和密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//给出jdbc模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//创建sql语句模板
 
 
 
 

  String sql = "delete from login_1 where username=?"; 

 
//调用jdbc模板功能
 

  int rows = jdbcTemplate.update(sql,"wangwu"); 

 

  System.out.println(rows); 

 
 
 
 

  } 

 

  } 

 
**查询总记录数
 

  public class spring_jdbc_find{ 

 

  public void find(){ 

 
//配置数据库信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载数据库驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库连接地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//设置数据库的密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//创建sql语句模板
 

  String sql = "select count(*)from login_1 "; 

 
//调用jdbc模板的功能
 
第一个参数就是给定的sql模板,第二个参数就是返回的类型 如果是String类型就是String.class
 

  System.out.println(rows); 

 

  } 

 

  } 

 
 
 
 
**查询某条记录的详细信息
 

  public class spring_jdbc_find2{ 

 

  @Test 

 

  public void testObject(){ 

 
//设置数据库信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库连接地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//设置数据库的密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//创建sql语句模板
 

  String sql = "select *from login_1 where username=?"; 

 
//调用jdbcTemplate方法
 
sql语句,第二个参数是接口,第三个参数是可变参数也就是你要操作的值
 

  System.out.println(user); 

 

  } 

 

  } 

 
 
 
 
//创建一个新的类实现 RowMapper接口
 

  class MyRowMapper RowMapper<User>{ 

 
//实现该类的一个方法
 

  public User mapRow(ResultSet rs,int num) throws SQLException{ 

 
//从结果集中得到数据
 

  String username = rs.getString("username"); 

 

  String password = rs.getString("password"); 

 
//把获取到数据封装到对象中去
 

  User user = new User(); 

 

  user.setUsername(username); 

 

  user.setPassword(password); 

 
 
 
 

  return user; 

 

  } 

 
 
 
 

  } 

 
 
 
 
**查询所有记录信息
 

  public class spring_jdbc_find3{ 

 

  @Test 

 

  public void testlist(){ 

 
//设置数据库信息
 

  DriverMangerDataSource dataSource = new DriverMangerDataSource(); 

 
//加载数据库驱动
 

  dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 

 
//设置数据库地址
 

  dataSource.setUrl("jdbc:mysql://localhost:3306/666"); 

 
//设置数据库密码
 

  dataSource.setUsername("root"); 

 

  dataSource.setPassword("root"); 

 
//创建jdbc模板
 

  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 

 
//给出sql语句模板
 

  String sql = "select *from login_1"; 

 
//调用jdbcTemplate方法
 

  List<User>list = jdbcTemplate.query(sql,new MyRowMapper());//该方法返回的是一个List集合 

 

  System.out.println(list); 

 
 
 
 

  } 

 

  } 

 
 
 
 

  class MyRowMapper implements RowMapper{ 

 
//实现该类接口的方法
 

  public User mapRow(ResultSet rs,int num) throws SQLException{ 

 
//获取参数
 

  String username= rs.getString("username"); 

 

  String password=rs.getString("password"); 

 
//封装到对象
 

  User user= new User(); 

 

  user.setUsername(username); 

 

  user.setPassword(password); 

 

  return user; 

 
 
 
 

  } 

 

  } 

 

  } 

 
 
 
 
**spring核心配置文件配置c3p0连接池
 

  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 

 

  <property name="driverClass" value="com.mysql.jdbc.Driver"></property> 

 

  <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/666"></property> 

 

  <property name="user" value="root"></property> 

 

  <property name="password" value="root"></property> 

 

  </bean> 

 
 
 
 
**spring核心配置文件配置c3p0创建对象来实现增删改查
 
//首先创建一个UserService类
 

  public class UserService{ 

 
//现在我要使用UserDao的add方法那么就 封装该类对象
 

  private UserDao userDao; 

 
//由于是通过配置文件来进行操作的就使用setter方法
 

  public void setUserDao(UserDao userDao){ 

 

  this.userDao = userDao; 

 

  } 

 
//这里创建一个方法来调用dao里面的add方法
 

  public void add(){ 

 

  userDao.add(); 

 

  } 

 
 
 
 

  } 

 
//然后创建一个UserDao类
 

  public class UserDao{ 

 

  public void add(){ 

 
//然后配置spring核心配置文件
 
//配置好了就得到JdbcTemplate的对象
 

  private JdbcTemplate jdbcTemplate; 

 
//setter方法
 

  public void setJdbcTemplate(JdbcTemplate jdbcTemplate){ 

 

  this.jdbcTemplate = jdbcTemplate; 

 

  } 

 
//创建一个方法来向数据库插入一条数据
 

  public void add(){ 

 
//给出sql语句模板
 

  String sql = "insert into login_1 values(?,?)"; 

 
//调用JdbcTemplate方法
 

  jdbcTemplate.update(sql,"哈哈","1111"); 

 
//最后新建一个类来测试就可以了
 

  } 

 

  } 

 

  } 

 
 
 
 
<!-- 配置c3p0的连接池 -->
 
<!-- 注入属性 -->
 

  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 

 

  <property name="driverClass" value="com.mysql.jdbc.Driver"></property> 

 

  <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/666"></property> 

 

  <property name="user" value="root"></property> 

 

  <property name="password" value="root"></property> 

 

  </bean> 

 
//由于要操作UserService和UserDao两个类所以要进行配置
 

  <bean id="userService" class="cn.zhoubiao.c3p0.UserService"> 

 
//由于我们是在UserService里面操作UserDao类的方法所以需要注入属性
 

  <property name="userDao" ref="userDao"></property> 

 

  </bean> 

 

  <bean id="userDao" class=cn.zhoubiao.c3p0.UserDao"> 

 
//这里我们要使用JdbcTemplate的方法所以要注入该属性
 

  <property name="jdbcTemplate" ref="jdbcTemplate"></property> 

 
//创建JdbcTemplate对象
 

  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 

 
//把dataSource传入到jdbcTemplate模板中
 

  <property name="dataSource" ref="dataSource"></property> 

 

  </bean>