美文网首页
struts和spring整合集成

struts和spring整合集成

作者: soloist001 | 来源:发表于2019-10-04 15:40 被阅读0次

第一部分:创建web工程

(1)新建webProject


创建web工程

第二部分:先集成Spring

(1)安装Spring


集成Spring

(2)将工程添加到tomcat发布,然后将tomcat上的Spring所需要的jar包拷贝到lib目录下,除C3P0以外。


发布之后将tomcat中lib目录下的包拷贝到webapp目录下lib下,除C3P0

第三部分:集成struts常用jar包

struts常用jar包

第四部分:集成JDBC驱动jar包

屏幕快照 2019-10-04 下午3.22.43.png

struts和spring插件包

整合spring和struts插件包

第五部分:集成C3P0连接池jar包

C3P0连接池jar包

第六部分:集成完成,然后修改配置文件
web.xml
applicationcontext.xml
struts.xml

web.xml

 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

applicationcontext.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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
    
     <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/eleshop?useSSL=false"></property>
        <property name="user" value="root"></property>
        <property name="password" value="00000000"></property>
    </bean>
    <bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
        <constructor-arg>
            <ref bean="dataSource"/>
        </constructor-arg>
    </bean>
    <context:component-scan base-package="cn.hd.action"></context:component-scan>
    <context:component-scan base-package="cn.hd.dao.impl"></context:component-scan>
    <context:component-scan base-package="cn.hd.service.impl"></context:component-scan>
    
        <!-- 1.aop事务的配置 -->
     <aop:config>
      <!--配置切入点
      一般修改的地方有两个  一个是切入点,一个是属性
       -->
      <aop:pointcut expression="execution(* cn.hd.service.*.*(..))" id="txpointCut"/>
      <!--配置连接点  -->
      <aop:advisor advice-ref="txAdvice" pointcut-ref="txpointCut"/>
     </aop:config>
     <!-- 2.配置事务切面类 -->
     <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <constructor-arg>
       <ref bean="dataSource"/>
      </constructor-arg>
     </bean>
     <!-- 3.配置连接点 -->
     <tx:advice id="txAdvice" transaction-manager="txManager">
      <tx:attributes>
       <!--是指事务的传播属性  -->
       <tx:method name="save*" propagation="REQUIRED"/>
       <tx:method name="update*" propagation="REQUIRED"/>
       <tx:method name="delete*" propagation="REQUIRED"/>
       <tx:method name="remove*" propagation="REQUIRED"/>
       <tx:method name="get*" propagation="NOT_SUPPORTED"/>
       <tx:method name="query*" propagation="NOT_SUPPORTED"/> 
       <tx:method name="*"/>
      </tx:attributes>
     </tx:advice>
</beans>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <!-- 添加自动刷新配置文件的常量设置 -->
    <constant name="struts.configuration.xml.reload" value="true"></constant>
    <package name="user" extends="struts-default" namespace="/user" strict-method-invocation="false">
        <action name="user_*" class="cn.hd.action.UserAction" method="{1}">
            <result name="success">/WEB-INF/user/user.jsp</result>
            <result name="add">/WEB-INF/user/addUser.jsp</result>
            <result name="query" type="redirectAction">user_query</result>
        </action>
    </package>
</struts>

第七部分:创建action
cn.hd.action

package cn.hd.action;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import cn.hd.model.DepartMentModel;
import cn.hd.model.RoleModel;
import cn.hd.model.UserModel;
import cn.hd.service.IDepartService;
import cn.hd.service.IRoleService;
import cn.hd.service.IUserService;

@Controller
public class UserAction extends ActionSupport implements ModelDriven<UserModel>{
    
    //
    private UserModel model = new UserModel();
    
    @Resource
    private IUserService userService;
    private List<UserModel> list;
    @Resource
    private IRoleService roleService;
    private List<RoleModel> roleList;
    @Resource
    private IDepartService departService;
    private List<DepartMentModel> departList;
        
    public String save() {
        System.out.println(model.toString());
        userService.save(model);
        return "query";
    }
    
    public String query() {
        list =  userService.query();
        return SUCCESS;
    }
    
    public String queryDepartAndRolePart() {
        roleList  = roleService.query();
        departList =  departService.query();
        return "add";
    }

    public List<DepartMentModel> getDepartList() {
        return departList;
    }

    public void setDepartList(List<DepartMentModel> departList) {
        this.departList = departList;
    }

    public List<RoleModel> getRoleList() {
        return roleList;
    }

    public void setRoleList(List<RoleModel> roleList) {
        this.roleList = roleList;
    }

    public List<UserModel> getList() {
        return list;
    }

    public void setList(List<UserModel> list) {
        this.list = list;
    }

    @Override
    public UserModel getModel() {
        // TODO Auto-generated method stub
        return model;
    }

}

第八部分:创建service层
cn.hd.service
cn.hd.service.impl

package cn.hd.service;

import java.util.List;

import cn.hd.model.UserModel;

public interface IUserService {
    void save(UserModel user) throws RuntimeException;
    List<UserModel> query();
}
package cn.hd.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import cn.hd.dao.IUserDao;
import cn.hd.model.UserModel;
import cn.hd.service.IUserService;

@Service
public class UserServiceImpl implements IUserService{

    @Resource
    private IUserDao userDao;
    @Override
    public void save(UserModel user) throws RuntimeException {
        //1.保存用户信息
        userDao.save(user);
        //将角色信息保存到中间表
        if (user.getRoleids()!= null) {
            for (Integer roleid : user.getRoleids()) {
                userDao.saveRole(roleid);
            }
        }
    }

    @Override
    public List<UserModel> query() {
        return userDao.query();
    }

}

第九部分:创建dao层
cn.hd.dao
cn.hd.dao.impl

package cn.hd.dao;

import java.util.List;

import cn.hd.model.UserModel;

public interface IUserDao {
    void save(UserModel user) throws RuntimeException;
    List<UserModel> query();
    void saveRole(Integer roleid);
}
package cn.hd.dao.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.stereotype.Repository;

import cn.hd.dao.IUserDao;
import cn.hd.model.UserModel;

@Repository
public class UserDaoImpl implements IUserDao{

    @Resource
    private NamedParameterJdbcTemplate template;
    private String sql;
    @Override
    public void save(UserModel user) throws RuntimeException {
        
        sql = "insert into day06_user(username,password,realname,deptid) values(:username,:password,:realname,:deptid)";
        SqlParameterSource parameterSource = new BeanPropertySqlParameterSource(user);
        template.update(sql, parameterSource);
    }

    @Override
    public List<UserModel> query() {
        sql = "select * from day06_user";
        RowMapper<UserModel> rowMapper = new BeanPropertyRowMapper<UserModel>(UserModel.class);
        return template.getJdbcOperations().query(sql, rowMapper);
    }

    @Override
    public void saveRole(Integer roleid) {
        
        sql="insert into day06_role(select @@identity,?)";
        template.getJdbcOperations().update(sql, roleid);
    }

}

第十部分:创建jsp

相关文章

网友评论

      本文标题:struts和spring整合集成

      本文链接:https://www.haomeiwen.com/subject/wchspctx.html