Stripes、MyBitas、Spring与maven整合

本文介绍了如何将Strips、MyBitas、Spring三大框架与Maven构建工具进行无缝整合,详细阐述了配置过程与关键步骤,帮助开发者提升项目构建与管理效率。
摘要由CSDN通过智能技术生成

需要导入jar包:

         spring-context-3.2.5.RELEASE.jar 
    spring-aop-3.2.5.RELEASE.jar 
    spring-core-3.2.5.RELEASE.jar 
    spring-expression-3.2.5.RELEASE.jar 
    spring-web-3.2.5.RELEASE.jar 
    aopalliance-1.0.jar 
    spring-jdbc-3.2.5.RELEASE.jar 
    spring-tx-3.2.5.RELEASE.jar 
    mybatis-spring-1.1.1.jar 
    spring-beans-3.2.5.RELEASE.jar 
    mybatis-3.1.1.jar 
    mysql-connector-java-5.1.20.jar 
    lombok-0.11.0.jar 
    stripes-1.5.7.jar 
    commons-logging-1.1.1.jar 
    aspectjweaver-1.6.12.jar 
    javamelody-core-1.39.0.jar
    jrobin-1.5.9.jar
    jstl-1.2.jar

web.xml配置:

<? xml  version = "1.0"  encoding =  "UTF-8" ?>
< web-app  xmlns = "http://java.sun.com/xml/ns/j2ee"  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version = "2.4"  >

        < filter >
              < filter-name >  StripesFilter </ filter-name  >
              < filter-class >  net.sourceforge.stripes.controller.StripesFilter </ filter-class  >
              < init-param >
                    < param-name >  ActionResolver.Packages </ param-name  >
                    < param-value >  cn.com.action </ param-value  >
              </ init-param >
              < init-param >
                    < param-name >  LocalizationBundleFactory.FieldNameBundle </ param-name  >
                    < param-value >  pagecontent </ param-value  >
              </ init-param >
        </ filter >
        < filter-mapping >
              < filter-name >  StripesFilter </ filter-name  >
              < url-pattern >  /* </  url-pattern >
              < dispatcher >  REQUEST </ dispatcher  >
        </ filter-mapping >
        < context-param >
              < param-name >  contextConfigLocation </ param-name  >
              < param-value >
                  classpath:/applicationContext.xml
              </ param-value >
        </ context-param >

        < servlet >
              < servlet-name >  StripesDispatcher </ servlet-name  >
              < servlet-class >  net.sourceforge.stripes.controller.DispatcherServlet </ servlet-class  >
              < load-on-startup >  10 </  load-on-startup >
        </ servlet >

        < servlet-mapping >
              < servlet-name >  StripesDispatcher </ servlet-name  >
              < url-pattern >  *.action </ url-pattern  >
        </ servlet-mapping >
        < servlet-mapping >
              < servlet-name >  StripesDispatcher </ servlet-name  >
              < url-pattern >  /action/* </ url-pattern  >
        </ servlet-mapping >

        < welcome-file-list >
              < welcome-file >  /jsp/index.jsp </ welcome-file  >
                     <  welcome-file >  /index.html  </ welcome-file  >
        </ welcome-file-list >

        < context-param >
              < param-name >  javax.servlet.jsp.jstl.fmt.localizationContext </ param-name  >
              < param-value >  pagecontent </ param-value  >
        </ context-param >
</ web-app >


pom.xml配置:

< project  xmlns = "http://maven.apache.org/POM/4.0.0"  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
        < modelVersion >  4.0.0 </ modelVersion  >

        < groupId >  cn.com.test </ groupId  >
        < artifactId >  MavenTest </ artifactId  >
        < version >  0.0.1-SNAPSHOT </ version  >
        < packaging >  jar </ packaging  >

        < name >  MavenTest </ name  >
        < url >  http://maven.apache.org </ url  >


        < properties >
              < project.build.sourceEncoding >  UTF-8 </ project.build.sourceEncoding  >
        </ properties >

        < profiles >
              < profile >
                    < id >  dev </ id  >
                    < activation >
                          < activeByDefault >  true </ activeByDefault  >
                    </ activation >
                    < build >
                          < filters >
                                < filter >  src/main/filters/filter-mine.properties  </ filter >
                          </ filters >
                    </ build >
              </ profile >
        </ profiles >

        < dependencies >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-context </ artifactId  >
                    < version >  3.2.5.RELEASE </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-web </ artifactId  >
                    < version >  3.2.5.RELEASE </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-jdbc  </ artifactId >
                    < version >  3.2.5.RELEASE </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.mybatis </ groupId  >
                    < artifactId >  mybatis-spring  </ artifactId >
                    < version >  1.1.1 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-beans </ artifactId  >
                    < version >  3.2.5.RELEASE </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.mybatis </ groupId  >
                    < artifactId >  mybatis </ artifactId  >
                    < version >  3.1.1 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  mysql </ groupId  >
                    < artifactId >  mysql-connector-java  </ artifactId >
                    < version >  5.1.20 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.projectlombok </ groupId  >
                    < artifactId >  lombok </ artifactId  >
                    < version >  0.11.0 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  net.sourceforge.stripes </ groupId  >
                    < artifactId >  stripes </ artifactId  >
                    < version >  1.5.7 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.aspectj </ groupId  >
                    < artifactId >  aspectjweaver </ artifactId  >
                    < version >  1.6.12 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  net.bull.javamelody </ groupId  >
                    < artifactId >  javamelody-core  </ artifactId >
                    < version >  1.39.0 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  javax.servlet </ groupId  >
                    < artifactId >  jstl </ artifactId  >
                    < version >  1.2 </ version  >
              </ dependency >
        </ dependencies >
        < build >
              < resources >
                    < resource >
                          < directory >  src/main/resources  </ directory >
                          < filtering >  true </ filtering  >
                    </ resource >
              </ resources >
              < plugins >
                    <!-- jetty 插件 -->
                    < plugin >
                          < groupId >  org.mortbay.jetty </ groupId  >
                          < artifactId >  maven-jetty-plugin </ artifactId  >
                          < version >  6.1.22 </ version  >
                          < configuration >
                                < contextPath >  / </  contextPath >
                                < connectors >
                                      < connector  implementation = "org.mortbay.jetty.nio.SelectChannelConnector"  >
                                            < port >  8080 </ port  >
                                            < maxIdleTime >  60000 </ maxIdleTime  >
                                      </ connector >
                                </ connectors >
                                < scanIntervalSeconds >  10 </  scanIntervalSeconds >
                          </ configuration >
                          < executions >
                                < execution >
                                      < id >  start-jetty  </ id >
                                      < goals >
                                            < goal >  run </ goal  >
                                      </ goals >
                                      < configuration >
                                            < scanIntervalSeconds >  0 </  scanIntervalSeconds >
                                            < daemon >  true </ daemon  >
                                      </ configuration >
                                </ execution >
                                < execution >
                                      < id >  stop-jetty  </ id >
                                      < goals >
                                            < goal >  stop </ goal  >
                                      </ goals >
                                </ execution >
                          </ executions >
                    </ plugin >
              </ plugins >
        </ build >
</ project >

user_sqlMap.xml配置:
 

<? xml  version = "1.0"  encoding =  "UTF-8" ?>
<! DOCTYPE  mapper   
         PUBLIC  "-//mybatis.org//DTD Mapper 3.0//EN"    
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd"  >
< mapper  namespace = "userSqlMap"  >
        < select  id =  "countUser"  resultType  = "java.lang.Integer" >
            SELECT count(*) FROM user
        </ select >
        < insert  id =  "insertUser"  parameterType  = "cn.com.entity.User" >
            insert into user(name, tel) values(#{name},#{tel})
        </ insert >
</ mapper >

mybatis-config.xml配置:

<? xml  version = "1.0"  encoding =  "UTF-8"  ?>   
<! DOCTYPE  configuration
              PUBLIC  "-//mybatis.org//DTD Config 3.0//EN"
              "http://mybatis.org/dtd/mybatis-3-config.dtd"  >
< configuration >
        < settings >
              < setting  name = "lazyLoadingEnabled"  value = "false"  />
        </ settings >
        < typeAliases >
              < package  name = "cn.com.entity"  />
        </ typeAliases >
        <!-- <properties resource="db.properties" />
      <environments default="development">
            <environment id="development">
                  <transactionManager type="JDBC" />
                  <dataSource type="POOLED">
                        <property name="driver" value="com.mysql.jdbc.Driver" />
                        <property name=" url" value="${jdbc.url}" />
                        <property name=" username" value="${jdbc.username}" />
                        <property name="password" value="${jdbc.password}" />
                  </dataSource>
            </environment>
      </environments>
       <mappers>
            <mapper resource=" mybatis/user_sqlMap.xml" />
       </mappers> -->
</ configuration >

db.properties文件:  

jdbc.host= localhost
jdbc.database= test
jdbc.url= jdbc:mysql://localhost:3306/test?characterEncoding= utf-8&rewriteBatchedStatements=true
jdbc.username= root
jdbc.password=

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: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-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" >

        < context:component-scan  base-package = "cn.com.action"  />
        < context:property-placeholder  location = "classpath:db.properties"  />
        < bean  id =  "dataSource"
              class = "org.springframework.jdbc.datasource.DriverManagerDataSource"  >
              < property  name = "url"  value = "${jdbc.url}" ></  property >
              < property  name = "username"  value = "${jdbc.username}"  ></ property >
              < property  name = "password"  value = "${jdbc.password}"  ></ property >
        </ bean >
        < bean  id =  "sqlSessionFactory"  class = "org.mybatis.spring.SqlSessionFactoryBean"  >
              < property  name = "dataSource"  ref = "dataSource"  />
              < property  name = "configLocation"  value = "classpath:mybatis-config.xml"  />
              < property  name = "mapperLocations"  value = "classpath:mybatis/*.xml"  />
        </ bean >
        < bean  id =  "transactionManager"
              class = "org.springframework.jdbc.datasource.DataSourceTransactionManager"  >
              < property  name = "dataSource"  ref = "dataSource"  />
        </ bean >
        < tx:advice  id =  "transactionAdvice"  transaction-manager = "transactionManager"  >
              < tx:attributes >
                    < tx:method  name = "add*"  propagation =  "REQUIRED"  />
                    < tx:method  name = "update*"  propagation =  "REQUIRED"  />
                    < tx:method  name = "delete*"  propagation =  "REQUIRED"  />
                    < tx:method  name = "select*"  propagation =  "SUPPORTS"  />
                    < tx:method  name = "*"  propagation =  "SUPPORTS"  />
              </ tx:attributes >
        </ tx:advice >
        < aop:config >
              < aop:pointcut  id =  "transactionPointcut"
                    expression = "execution(public * *..service..*.*(..))"  />
              < aop:advisor  pointcut-ref = "transactionPointcut"
                    advice-ref = "transactionAdvice"  />
        </ aop:config >
      
        <!-- spring读取properites文件;资源绑定 -->
        < bean  id =  "messageSource"
              class = "org.springframework.context.support.ReloadableResourceBundleMessageSource"  >
              < property  name = "basenames"  >
                    < list >
                          < value >  classpath:pagecontent </ value  >
                    </ list >
              </ property >
        </ bean >
      
        < bean  id =  "genericDao"  class  = "cn.com.daoimpl.GenericDaoImpl" >
              < property  name = "sqlSessionFactory"  ref = "sqlSessionFactory"  />
        </ bean >
        < bean  id =  "userDao"  class  = "cn.com.daoimpl.UserDaoImpl"  parent = "genericDao"  />
        < bean  id =  "userService"  class  = "cn.com.serviceimpl.UserServiceImpl" >
              < property  name = "userDao"  ref = "userDao"  />
        </ bean >
</ beans >

pagecontent.properties文件 (用于配置页面需要的常量):

#common
common.syspath =  ${m.syspath}


filter-mine.properties文件:



User.java:

package  cn.com.entity;

import  java.io.Serializable;

import  lombok.Data;
import  lombok.EqualsAndHashCode;

import  org.apache.ibatis.type.Alias;

@Data
@EqualsAndHashCode (callSuper =  false )
@Alias ( "user"  )
public  class  User  implements  Serializable{
     private  static  final  long  serialVersionUID  = 1L;
     private  Integer  id ;
     private  String  name ;
     private  String  tel ;
}


GenericDaoImpl.java:

package  cn.com.daoimpl;

import  org.mybatis.spring.support.SqlSessionDaoSupport;

public  class  GenericDaoImpl  extends  SqlSessionDaoSupport {

}


UserDao.java:

package  cn.com.dao;

import  cn.com.entity.User;

public  interface  UserDao {
     int  countUser();

     int  insertUser(User user);
   
}

UserDaoImpl.java:

package  cn.com.daoimpl;

import  cn.com.dao.UserDao;
import  cn.com.entity.User;

public  class  UserDaoImpl  extends  GenericDaoImpl  implements  UserDao {

     public  int  countUser() {
         return  getSqlSession().selectOne( "userSqlMap.countUser"  );
    }

     public  int  insertUser(User user) {
         return  getSqlSession().insert( "userSqlMap.insertUser"  ,user);
    }

}

UserService.java:

package  cn.com.service;

import  cn.com.entity.User;

public  interface  UserService {
     int  countUser();

     boolean  addUser(User u);
}


UserServiceImpl.java:

package  cn.com.serviceimpl;

import  lombok.Getter;
import  lombok.Setter;

import  org.springframework.stereotype.Service;

import  cn.com.dao.UserDao;
import  cn.com.entity.User;
import  cn.com.service.UserService;

@Service
public  class  UserServiceImpl  implements  UserService {
     @Getter
     @Setter
     private  static  UserDao  userDao ;

     public  int  countUser() {
         return  userDao  .countUser();
    }

     public  boolean  addUser(User u) {
         int  id =  userDao  .insertUser(u);
         if  (id == 0) {
             return  false  ;
        }  else  {
             return  true  ;
        }
    }
}

UserAction.java:

package  cn.com.action;

import  lombok.Getter;
import  lombok.Setter;
import  net.sourceforge.stripes.action.ActionBean;
import  net.sourceforge.stripes.action.ActionBeanContext;
import  net.sourceforge.stripes.action.DefaultHandler;
import  net.sourceforge.stripes.action.ForwardResolution;
import  net.sourceforge.stripes.action.Resolution;

import  org.springframework.beans.factory.annotation.Autowired;
import  org.springframework.context.ApplicationContext;
import  org.springframework.context.support.ClassPathXmlApplicationContext;
import  org.springframework.dao.DataAccessException;

import  cn.com.entity.User;
import  cn.com.service.UserService;

public  class  UserActionBean  implements  ActionBean {
     @Autowired
     private  UserService  userService ;
     private  ActionBeanContext  context ;
     @Setter
     @Getter
     private  User  u ;

     public  ActionBeanContext getContext() {
         return  this  . context  ;
    }

     public  void  setContext(ActionBeanContext context) {
         this . context  = context;
    }

     @DefaultHandler
     public  Resolution index() {
         return  new  ForwardResolution( "/jsp/add.jsp" );
    }

     @SuppressWarnings (  "resource" )
     public  Resolution addUser() {
         try  {
            ApplicationContext context1 =  new  ClassPathXmlApplicationContext(
                     "applicationContext.xml" );
            UserService userService = (UserService) context1.getBean( "userService"  );
            userService.addUser(  u );
        }  catch  (DataAccessException e) {
             return  new  ForwardResolution( "/jsp/add.jsp" );
        }  catch  (Exception e) {
             return  new  ForwardResolution( "/jsp/add.jsp" );
        }
         return  new  ForwardResolution( "/jsp/index.jsp" );
    }
}

taglib.jsp:

<%@  taglib  prefix = "s"  uri = "http://stripes.sourceforge.net/stripes.tld"  %>
<%@  taglib  prefix = "sd"  uri = "http://stripes.sourceforge.net/stripes-dynattr.tld"  %>
<%@  taglib  prefix = "c"  uri = "http://java.sun.com/jsp/jstl/core"  %>
<%@  taglib  prefix = "fmt"  uri = "http://java.sun.com/jsp/jstl/fmt"  %>
<%@  taglib  prefix = "fn"  uri = "http://java.sun.com/jsp/jstl/functions"  %>
< c:set  var = "syspath"  >< fmt:message  key = "common.syspath"  /></ c:set >


index.jsp:

<! DOCTYPE  html  PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"  >
<%@  page  language =  "java"  pageEncoding  = "UTF-8"  contentType = "text/html; charset=UTF-8" %>
<%@  include  file = "/jsp/common/taglibs.jsp" %>
< html  xmlns = "http://www.w3.org/1999/xhtml"  >
< head >
        < link  rel = "stylesheet"  type = "text/css"  href = "  ${syspath} /static/css/index.css"  />
</ head >
< body >        
       < button  type = "button"  onclick = "addUser();" >  添加 </ button  >
</ body >
< script  type = "text/javascript" >
        function  addUser(){
            location =  "${syspath}/User.action?index="  ;
      }
</ script >
</ html >

add.jsp:

<! DOCTYPE  html  PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"  >
<%@  page  language =  "java"  pageEncoding  = "UTF-8"  contentType = "text/html; charset=UTF-8" %>
<%@  include  file = "/jsp/common/taglibs.jsp" %>
< html  xmlns = "http://www.w3.org/1999/xhtml"  >
< body >
        < div >
              < table >
                    < s:form  id =  "userForm"  action  = "" >
                          < tr >
                                < td >  名称 </ td  >
                                < td ><  input  name  = "u.name"  type = "text"  /></ td >
                          </ tr >
                          < tr >
                                < td >  电话 </ td  >
                                < td ><  input  name  = "u.tel"  type = "text"  /></ td >
                          </ tr >
                          < tr >
                                < td >
                                      < button  type = "button"  onclick = "submitUser();"  > 提交 </  button >
                                      < button  type = "reset"  > 重置 </  button >
                                </ td >
                          </ tr >
                    </ s:form >
              </ table >
        </ div >
</ body >
< script  src = " ${syspath} /static/js/jquery/jquery-1.10.2.min.js" ></ script >
< script  type = "text/javascript" >
        function  submitUser(){
            $.ajax({
                    url:  '<s:url beanclass="cn.com.action.UserActionBean" event="addUser" />' ,
                    cache:  false ,
                    async:  false ,
                    type:  "post" ,
                    data: $(  "#userForm" ).serialize(),
                    success:showResponse
                  });
      }

        function  showResponse(data, textStatus, jqXHR){
              if ( jqXHR.getResponseHeader( "errStatus"  ) == 2 ){
                  top.location =  '${syspath}' ;
                    return ;
            }
              if ( jqXHR.getResponseHeader( "errStatus"  ) == 1 ){
                  alert(  "[@spring.message 'msg.permission.notallowed'/]" );
                    return ;
            }
              if (data ==  'd'  ||data== 'e' ){
                  alert(  "操作失败,请联系管理员"  );
                    return ;
            }  else {
                  alert(  "编辑成功"  );
                  window.location =  '${syspath}' ;
            }
      }
      
</ script >
</ html >



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值