Spring集成web环境

web环境-基本三层架构环境搭建

导入坐标
 

      <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.3</version>
            <scope>provided</scope>
      </dependency>

接口

public interface UserDao {
    public void save();
}

实现类

public class UserDaolmpl implements UserDao {
    public void save(){
        System.out.println("save running....");
    }
}

 接口

public interface UserService {
    public void save();
}

实现类

public class UserServicelmpl implements UserService {
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void save() {
        userDao.save();
    }
}

映射

  <servlet>
        <servlet-name>UserServlet</servlet-name>
        <servlet-class>com.itheima.web.UserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UserServlet</servlet-name>
        <url-pattern>/userServlet</url-pattern>
  </servlet-mapping>

测试类

public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = app.getBean(UserService.class);
        userService.save();
    }
ApplicationContext应用上下文获取方式

应用上下文对象是通过new ClassPathXmlApplicationContext(Spring配置文件)方法获取的,但是每次从容器中获取Bean时都要编写new ClassPathxmlApplicationContext(Spring配置文件),这样的弊端是配置文件加载多次,应用上下文创建多次

在web项目中,可以使用ServietContextListener监听web应用的启动,我们可以在web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicantContext,在将其储存到最大的域ServletContext域中就这样可以在任意位置从域中获得应用上下文ApplicantContext对象了
 

导入坐标

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.3</version>
            <scope>provided</scope>
        </dependency>
//接口
public void save();
//实现类
public void save(){
    System.out.println("save running....");
}
//接口
public void save();
//实现类
private UserDao userDao;
 
public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
}
@Override
public void save() {
    userDao.save();
}
//映射
<listener>
    <listener-class>com.Listener.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>UserService</servlet-name>
    <servlet-class>com.itheima.web.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>UserService</servlet-name>
    <url-pattern>/userService</url-pattern>
</servlet-mapping>
//将Spring上下文储存到servletContext域中
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
    ApplicationContext app =new ClassPathXmlApplicationContext("applicationContext.xml");
    ServletContext servletContext=servletContextEvent.getServletContext();
    servletContext.setAttribute("app",app);
    System.out.println("运行成功");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
 
}
//测试类
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    ServletContext servletContext = this.getServletContext();
    ApplicationContext app = (ApplicationContext) servletContext.getAttribute("app");
    UserService bean = app.getBean(UserService.class);
    bean.save();
}

Spring提供获取应用上下文的工具

 在Spring提供的方法中只要做两件事

  • 在web.xml中配置ContextloaderListener监听器(导入Spring-web坐标)
  • 使用webApplicationContextUtils获取应用上下文对象ApplicantContex
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值