SpringMVC

Spring整合Mybatis

1、SqlSessionFactory对象应该放到spring容器中作为单例存在。

2、传统dao的开发方式中,应该从spring容器中获得sqlsession对象。

3、Mapper代理形式中,应该从spring容器中直接获得mapper的代理对象。

4、数据库的连接以及数据库连接池事务管理都交给spring容器来完成。

 

     1、 用整合包 去配置 sqlSessionFactory   注入数据连接池     注入mybatis核心配置文件    别名扫描的包    ===》 这样搞定sqlSessionFactory

     2、 后面的不管是传统的还是 动态代理的  都把sqlSessionFactory作为属性注入

 

 

  SpringMVC是个mvc框架,属于SpringFrameWork的后续产品

  处理用户请求的

  关于Spring mvc 基于servlet 的 不是基于filter 的   控制器基于方法级别的拦截,处理器设计为单例。参数通过方法入参传递 与spring同一家公司,可以与spring无缝整合 不需要整合包

   如果1000个并发 就一个到单例搞定了 内存消耗低  参数直接搞定到方法里面

   

   

Spring mvc 入门开发:

 1 、创建动态web工程

 2、 引入jar包  只有一个  spring-webmvc 的jar包 

 

通过@Controller标识为控制器   

            方法接受请求 用注解 @RequestMapping绑定请求地址

           作为web请求应该干一些活 比如响应视图, 响应视图可以用 ModelAndView   模型和视图 绑定数据  设置视图的名字

           创建响应的jsp文件目录

      

package com.toov5.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {
    
    @RequestMapping("hello")
    public ModelAndView hello() {
        System.out.println("hello springmvc");
        ModelAndView mav = new ModelAndView();
        //设置模型数据 用于传递给jsp
        mav.addObject("msg","hello springmvc");
        //设置视图名字 用于响应用户
        mav.setViewName("/WEB-INF/jsp/hello.jsp");
        
        return mav;
    }
    
}

jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">    
<html>
<head>
<meta charset="UTF-8">
<title>输出提示</title>
</head>
<body>
   ${ msg }
</body>
</html>

配置 dispatcherServlet  到web.xml

   

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Springmvc</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 核心控制器 -->
  <servlet>
     <servlet-name>springmvc</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
     <servlet-name>springmvc</servlet-name>
     <url-pattern>*.action</url-pattern>
  </servlet-mapping>
  
</web-app>

 

配置Spring的包扫描 (controller的扫描)

<?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:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!-- 配置controller扫描包  (spring 里面的包扫描) -->
    <context:component-scan base-package="com.toov5.mvc.controller" />
</beans>

spring的配置文件需要加载:(之前通过web监听器加载)
springmvc的可以通过  FrameworkiServlet 这个父类的属性: contextConfigLocation

父类中:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Springmvc</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
   
  
  <!-- 核心控制器 -->
  <servlet>
     <servlet-name>springmvc</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!-- 初始参数设置   加载spring核心配置文件-->
     <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
     </init-param>
 
  </servlet>
  
  <servlet-mapping>
     <servlet-name>springmvc</servlet-name>
     <url-pattern>*.action</url-pattern>
  </servlet-mapping>
  
</web-app>

目录结构:

 

访问:

 

 访问过程:

    *.action 被servlet拦截 这个servlet由 DispatcherServlet处理,接下来 通过配置文件(springmvc.xml)进行初始化参数进行初始化

     springmvc.xml 有包扫描,获取带@Controller的Java类文件,识别为控制器,然后进入控制器里面了,通过扫描识别到@RequestMapping("hello") 绑定用户请求 ,然后执行具体的代码

 

 通过右键项目名称可以修改访问时候的 根路径名称

WEB-INF 不可以直接返回提高了安全性

 

商品列表展示:

 

package com.toov5.mvc.controller;

import java.util.Arrays;
import java.util.Date;import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.toov5.mvc.pojo.Item;

@Controller
public class ItemController {
  
    @RequestMapping("itemList")
    public ModelAndView itemList() {
         ModelAndView mav  = new ModelAndView();
         
        List<Item> list = Arrays.asList(new Item(1,"电脑",10000,new Date(),"配置好" ),
                 new Item(2,"手机",10000,new Date(),"像素好" ),
                 new Item(3,"洗衣机",10000,new Date(),"容量大" ) 
                 );
        /*jsp通过itemList遍历之*/
         mav.addObject("itemList",list);
         mav.setViewName("/WEB-INF/jsp/itemList.jsp");
         return mav;
    }
}

 

 pojo:

package com.toov5.mvc.pojo;

import java.util.Date;

public class Item {
    private int id;
    private String name;
    private double price;
    private Date createtime;
    private String detail;
    
    

    public Item() {
        super();
    }

    public Item(int id, String name, double price, Date createtime, String detail) {
        super();
        this.id = id;
        this.name = name;
        this.price = price;
        this.createtime = createtime;
        this.detail = detail;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public Date getCreatetime() {
        return createtime;
    }

    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

}

Jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查询商品列表</title>
</head>
<body> 
<form action="${pageContext.request.contextPath }/queryItem.action" method="post">
查询条件:
<table width="100%" border=1>
<tr>
<td><input type="submit" value="查询"/></td>
</tr>
</table>
商品列表:
<table width="100%" border=1>
<tr>
    <td>商品名称</td>
    <td>商品价格</td>
    <td>生产日期</td>
    <td>商品描述</td>
    <td>操作</td>
</tr>
<c:forEach items="${itemList }" var="item">
<tr>
    <td>${item.name }</td>
    <td>${item.price }</td>
    <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
    <td>${item.detail }</td>
    
    <td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>

</tr>
</c:forEach>

</table>
</form>
</body>

</html>

sprimgmvc.xml 配置文件不用修改

访问: http://localhost:8080/itemList.action

分析:

  如何通过一个 @RequestMapping绑定了请求  如何做到的?

    

  通过Springmvc的源码包:

   

打开这个配置文件:

  

url请求到底是由哪个控制器处理,从spring3.1版本开始,废除了DefaultAnnotationHandlerMapping的使用,推荐使用RequestMappingHandlerMapping完成注解式处理器映射。

 

由上图可以看出  已经过期了

所以配置这个Bean:

<!-- 配置处理器映射器 -->

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

 而且还需要处理器适配器的!目前也过期了!
所以也需要设置这个Bean

从spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用RequestMappingHandlerAdapter完成注解式处理器适配。

<!-- 处理器适配器 -->

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

 

 解读:      

 处理器适配器:

   @Controller的这个类 我们没有实例化 也没有手动去调用。这个是由处理器适配器工作实现的

 以上的太繁琐,不容易配置和记忆:

简单粗暴配置注解驱动: 可以代替上面的两个Bean配置

<!-- 注解驱动配置,代替映射器与适配器的单独配置,同时支持json响应(推荐使用)    企业级开发 -->

    <mvc:annotation-driven />

           

继续简化  mav.setViewName("/WEB-INF/jsp/itemList.jsp");     路径名字也可以简化

Spring MVC中有个视图解析器,木有过期 请放心使用!

<!-- 配置视图解析器 -->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

       <!-- 配置视图响应的前缀 -->

       <property name="prefix" value="/WEB-INF/jsp/" />

       <!-- 配置视图响应的后缀 -->

       <property name="suffix" value=".jsp" />

    </bean>

配置:

 

<?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:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!-- 配置controller扫描包  (spring 里面的包扫描) --> 
    <context:component-scan base-package="com.toov5.mvc.controller" />
  
    <!-- 注解驱动配置,代替映射器与适配器的单独配置,同时支持json响应(推荐使用) -->
    <mvc:annotation-driven />
    
    <!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 配置视图响应的前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 配置视图响应的后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>
    
</beans>
 

 

这样在controller里面 可以去掉前缀 后缀开发了:

   

package com.toov5.mvc.controller;

import java.util.Arrays;
import java.util.Date;import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.toov5.mvc.pojo.Item;

@Controller
public class ItemController {
  
    @RequestMapping("itemList")
    public ModelAndView itemList() {
         ModelAndView mav  = new ModelAndView();
         
        List<Item> list = Arrays.asList(new Item(1,"电脑",10000,new Date(),"配置好" ),
                 new Item(2,"手机",10000,new Date(),"像素好" ),
                 new Item(3,"洗衣机",10000,new Date(),"容量大" ) 
                 );
        /*jsp通过itemList遍历之*/
         mav.addObject("itemList",list);
         mav.setViewName("itemList");  //jsp的名字
         return mav;
    }
}

 

DispatchServlet是一个前端控制器,它会匹配通过设置的路径进行拦截,它是不能干活的。 第一个组件叫处理器映射器,绑定用户请求的。处理完之后,会根据用户的请求地址返回执行链(会有哪一个处理器(标记@Controller的)进行处理)

然后告诉前段处理器谁去处理,前端控制器去找到处理器适配器(HandlerAdapter),让它去创建实例,执行具体的方法(Handler)。Handler执行完毕后会返回ModelAndView给处理器适配器,然后处理器适配器去告诉前端控制器。然后去依赖视图解析器,请求视图解析器,视图解析器响应一个view对象。然后前端控制器收到后去调用视图组件渲染视图。最后通过前端控制器去响应给用户

 

  Spring mvc里面的三大组件:   处理器映射器  处理器适配器   视图解析器   

  最核心的是前端控制器

 

 




 

Springmvc 整合 Mybatis

   抽取开发 分开管理:

   spring管理的 springmvc管理的  mybatis管理的

     

Dao层:

1、SqlMapConfig.xml,空文件即可。需要文件头。

2、applicationContext-dao.xml。

 a)       数据库连接池

 b)       SqlSessionFactory对象,需要spring和mybatis整合包下的。

 c)        配置mapper文件扫描器。

 

Service层:

1、applicationContext-service.xml包扫描器,扫描@service注解的类。

2、applicationContext-trans.xml配置事务。 

 

Controller层:

Springmvc.xml

1、包扫描器,扫描@Controller注解的类。

2、配置注解驱动。

3、视图解析器

 

Web.xml

  1. 配置spring容量监听器
  2. 配置前端控制器

 

 

Dao的配置:

  创建 SQL映射文件 和 Java接口的包   com.toov5.mvc.mapper

  创建实体类Bean的包        com.toov5.mvc.pojo  (作为别名标签的被扫描包)

  创建Mybatis 的全局配置文件 SqlMapConfig.xml(为空的,交给Spring去管理了)

  

<?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>
    
</configuration>
 

 

  创建Spring的配置文件  applicationContext-dao.xml  

   

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

   <!-- 加载配置文件 -->
   <context:property-placeholder location="classpath:jdbc.properties" />

    <!-- 数据库连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <!-- 连接池的最大数据库连接数 -->
        <property name="maxActive" value="10" />
        <!-- 最大空闲数 -->
        <property name="maxIdle" value="5" /> 
    </bean>
    
    <!-- SqlSessionFactory配置 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 加载mybatis核心配置文件 -->
        <property name="configLocation" value="classpath:SqlMapConfig.xml" />
        <!-- 别名包扫描 -->
        <property name="typeAliasesPackage" value="com.toov5.mvc.pojo" />
    </bean>
 
    
    <!-- 动态代理,第二种方式:包扫描(推荐) 扫描动态代理的映射文件和接口: -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- basePackage多个包用","分隔 -->
        <property name="basePackage" value="com.toov5.mvc.mapper" />
    </bean> 
</beans>

 

Service层:

 配置扫描包的标签配置 扫描@Service注解

 配置事务管理:

    首先要有事务管理器(Spring提供的)   需要数据源注入到Spring中

    配置通知: 引用事务管理器   在这些通知里面建立事务传播行为

    配置切面: 告知哪里去使用这些通知的切面

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

    <!-- 事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- 传播行为 -->
            <tx:method name="save*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
            <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
            <tx:method name="query*" propagation="SUPPORTS" read-only="true" />
        </tx:attributes>
    </tx:advice>

    <!-- 切面 -->
    <aop:config>
        <aop:advisor advice-ref="txAdvice"
            pointcut="execution(* com.toov5.mvc.service.*.*(..))" />
    </aop:config>

</beans>

 

Controller层:

 

<?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:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!-- 配置@controller扫描包 -->
    <context:component-scan base-package="com.toov5.mvc.controller" />
    
    
    <!-- 配置注解驱动,相当于同时使用最新处理器映射跟处理器适配器,对json数据响应提供支持 -->
    <mvc:annotation-driven />
    
    <!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

 

最后配置 web.xml

   

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Springmvc</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
   
  
<!-- 配置spring -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext*.xml</param-value>
    </context-param>

    <!-- 使用监听器加载Spring配置文件 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    
    <!-- 前端控制器 -->
    <servlet>
        <servlet-name>springmvc-web</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/springmvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc-web</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
  
</web-app>

 

Dao层开发: 通过逆向工程

逆向文件生成:

 

 Service:

  接口和实现类的开发 

  

package com.toov5.mvc.service;

import java.util.List;

import com.toov5.mvc.pojo.Item;

public interface ItemService {
  
    List<Item> getItemList();
    
}

 

package com.toov5.mvc.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.toov5.mvc.mapper.ItemMapper;
import com.toov5.mvc.pojo.Item;
import com.toov5.mvc.service.ItemService;

@Service
public class ItemServiceImpl implements ItemService {
    
    @Autowired
    private ItemMapper iMapper;
    
    public List<Item> getItemList() {
        //想查询所有 传入空
        return iMapper.selectByExample(null);
    }

}

 

 

Controller:

 

package com.toov5.mvc.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.toov5.mvc.pojo.Item;
import com.toov5.mvc.service.ItemService;

@Controller
public class ItemController {
    
    @Autowired
    private ItemService itemService;
    
    
    @RequestMapping("itemList")
    public ModelAndView itemList() {
         ModelAndView mav  = new ModelAndView();         
         List<Item> itemList = itemService.getItemList();
         mav.addObject("itemList",itemList);
         mav.setViewName("itemList");  //jsp的名字
         return mav;
    }
}

 

然后相应的jsp要写好

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查询商品列表</title>
</head>
<body> 
<form action="${pageContext.request.contextPath }/queryItem.action" method="post">
查询条件:
<table width="100%" border=1>
<tr>
<td><input type="submit" value="查询"/></td>
</tr>
</table>
商品列表:
<table width="100%" border=1>
<tr>
    <td>商品名称</td>
    <td>商品价格</td>
    <td>生产日期</td>
    <td>商品描述</td>
    <td>操作</td> 
</tr>
<c:forEach items="${itemList }" var="item">
<tr>
    <td>${item.name }</td>
    <td>${item.price }</td>
    <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
    <td>${item.detail }</td>
    
    <td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>

</tr>
</c:forEach>

</table>
</form>
</body>

</html>

 目录结构:

访问:http://localhost:8080/SSM01/itemList.action

 

posted @ 2019-01-13 02:11  toov5  阅读(159)  评论(0编辑  收藏  举报