spring 整合web项目(struts2)

一、准备工作

1、创建新的web项目
2、导入jar包
  • spring的jar包


    spring 整合web项目(struts2)_第1张图片
    spring的jar包
  • sturts2的jar包


    spring 整合web项目(struts2)_第2张图片
    sturts2的jar包
3、创建相应的文件
  • 创建Action
  • 创建Service
  • 创建Dao


    spring 整合web项目(struts2)_第3张图片
    image.png
4、配置spring
spring 整合web项目(struts2)_第4张图片
image.png
5、配置struts2
spring 整合web项目(struts2)_第5张图片
image.png
6、配置struts2的过滤器
spring 整合web项目(struts2)_第6张图片
image.png

二、代码

UserDao.java

package work.zhangdoudou.Dao;

public class UserDao {
    public void addUser() {
        System.out.println("dao----------");
    }
}

UserService.java

package work.zhangdoudou.Service;

import work.zhangdoudou.Dao.UserDao;

public class UserService {
    
    UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void add() {
        System.out.println("service------");
        userDao.addUser();
    }
}

UserAction.java

package work.zhangdoudou.Action;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.opensymphony.xwork2.ActionSupport;
import work.zhangdoudou.Service.UserService;

public class UserAction extends ActionSupport {
    
    @Override
    public String execute() throws Exception {
        System.out.println("Action--------------");
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService=(UserService)context.getBean("userService");
        userService.add();
        
        return NONE;
    }
}

spring配置applicationContext.xml



        
    
        
    
    


struts2配置struts.xml




    
    
            
            
                
                    /index.jsp
                
            

过滤器web.xml



  spring_day02_2SpringStruts2
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
  
    struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  
  
    struts2
    /*
  
  

log4j.properties

log4j.rootLogger=info, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
#log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# Print the date in ISO 8601 format
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

三、运行结果

spring 整合web项目(struts2)_第7张图片
image.png

四、分析改良

1、分析:
  • 这样的项目每次访问action都要加载spring的配置文件
  • 项目运行效率低
2、解决方案

(1)在服务器启动的时候,创建对象加载配置文件
(2)使用底层监听器、servletContext对象

3、spring里面不需要我们自己写代码,已经封装好了

(1)spring封装了一个监听器,只需要配置监听器就可以了
(2)配置监听器之前要导入spring整合web的jar包


spring 整合web项目(struts2)_第8张图片
jar包

i配置

(3)指定加载spring配置文件的位置

  • 不指定会异常
  • 默认加载/WEB-INF/applicationContext.xml这个文件
  • 我的文件在src下
spring 整合web项目(struts2)_第9张图片
异常
  • 加载配置文件


    spring 整合web项目(struts2)_第10张图片
    web.xml

    spring 整合web项目(struts2)_第11张图片
    image.png

(4)把Action创建交给spring管理

  • 导入jar包,这个包struts2提供


    image.png
  • spring创建Action


    image.png
  • struts2加载创建好的action


    spring 整合web项目(struts2)_第12张图片
    image.png
4、改良后的代码

UserDao.java

package work.zhangdoudou.Dao;

public class UserDao {
    public void addUser() {
        System.out.println("dao----------");
    }
}

UserService.java

package work.zhangdoudou.Service;

import work.zhangdoudou.Dao.UserDao;

public class UserService {
    
    UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void add() {
        System.out.println("service------");
        userDao.addUser();
    }
}

UserAction.java

public class UserAction extends ActionSupport {
    UserService userService;
    @Override
    public String execute() throws Exception {
        System.out.println("Action--------------");
//      ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//      UserService userService=(UserService)context.getBean("userService");
        
        userService.add();
        
        return NONE;
    }
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
}

applicationContext.xml



        
    
        
    
    
    
    
    
        
        
    
    

struts.xml




    
    
            
            
                
                
                    /index.jsp
                
            

web.xml



  spring_day02_2SpringStruts2
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
  
  
    contextConfigLocation
    classpath:applicationContext.xml
  
   
  
  
    struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  
  
    struts2
    /*
  
  

log4j.properties

log4j.rootLogger=info, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
#log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# Print the date in ISO 8601 format
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN
5、运行结果
spring 整合web项目(struts2)_第13张图片
image.png

你可能感兴趣的:(spring 整合web项目(struts2))