zoukankan      html  css  js  c++  java
  • 自我学习SSM框架集成(一)

    因为和班上大佬一起合作了一个小项目,大佬是老师实验室的,在实验室期间自学了很多东西,所以为了跟上大佬的脚步一起合作,也得自学一些玩意儿SSM全家桶

    因为以前没有学过servelet所以先从Servelet入手,然后在学Spring,Spring MVC,Mybatis。

    对于这三个已经利用零零散散的时间在How2j上不系统的学习了使用,但是今天在准备把三个整合成SSM框架时,发现前面学的有的又已经忘了。所以为了强化记忆,特此写下整合博客方便自己理解

    所以,先实现使用SSM框架来查询单表数据,并显示

    一、关于IDEA创建SSM工程(http://how2j.cn/k/idea/idea-maven-idea-ssm-create/1397.html)

    注:按照教程创建会发现SSM工程中并没有resource这个文件夹,这个文件夹不是普通文件夹而是resource专用文件夹

    具体创建过程    https://blog.csdn.net/qq_37869130/article/details/82380529

    二、实现效果

    输入地址,查询单表数据并用表格显示

    三、实现

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3          xmlns="http://java.sun.com/xml/ns/javaee"
     4          xmlns:web="http://java.sun.com/xml/ns/javaee"
     5          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
     6 
     7   <!-- spring的配置文件-->
     8   <context-param>
     9     <param-name>contextConfigLocation</param-name>
    10     <param-value>classpath:applicationContext.xml</param-value>
    11   </context-param>
    12   <listener>
    13     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    14   </listener>
    15 
    16 
    17   <!-- spring mvc核心:分发servlet -->
    18   <servlet>
    19     <servlet-name>mvc-dispatcher</servlet-name>
    20     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    21     <!-- spring mvc的配置文件 -->
    22     <init-param>
    23       <param-name>contextConfigLocation</param-name>
    24       <param-value>classpath:springMVC.xml</param-value>
    25     </init-param>
    26     <load-on-startup>1</load-on-startup>
    27   </servlet>
    28   <servlet-mapping>
    29     <servlet-name>mvc-dispatcher</servlet-name>
    30     <url-pattern>/</url-pattern>
    31   </servlet-mapping>
    32 
    33 </web-app>

    1.当输入/listCategory时,SSM将会把这个请求交由web.xml文件处理

    其中,Spring mvc代码 会将所有访问拦截交由DispatcherServlet处理,并让resource文件夹的SpringMVC.xml指定Controller和jsp文件的所在文件夹

       <context:annotation-config/>       <!-- 扫描Controller,并将其生命周期纳入Spring管理-->
    
        <context:component-scan base-package="com.how2java.controller">
              <context:include-filter type="annotation" 
              expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
    
        <mvc:annotation-driven />                                     <!--注解驱动,以使得访问路径与方法的匹配可以通过注解配置-->
        
        <mvc:default-servlet-handler />                    <!--静态页面,如html,css,js,images可以访问-->
    
    
        <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
            <property name="viewClass"
                value="org.springframework.web.servlet.view.JstlView" />
            <property name="prefix" value="/WEB-INF/jsp/" />                <!-- 视图定位到/WEB/INF/jsp 这个目录下 -->
            <property name="suffix" value=".jsp" />
        </bean>
    </beans>

     2.然后用web.xml的Spring核心 的applicationContext将 数据库加入,使框架整体能操作数据库  

        <context:annotation-config />                   
        <context:component-scan base-package="com.how2java.service" />            通过注解,将Service的生命周期纳入Spring的管理      
     
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">        配置数据源
          <property name="driverClassName"> 
              <value>com.mysql.jdbc.Driver</value> 
          </property> 
          <property name="url"> 
              <value>jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8</value> 
         
          </property> 
          <property name="username"> 
              <value>root</value> 
          </property> 
          <property name="password"> 
              <value>a123456</value> 
          </property>    
        </bean>
         
        <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">               扫描存放SQL语句的Category.xml          
            <property name="typeAliasesPackage" value="com.how2java.pojo" />           处理的类文件夹
            <property name="dataSource" ref="dataSource"/>                                        操作数据库
            <property name="mapperLocations" value="classpath:com/how2java/mapper/*.xml"/>            主函数操作方法接口文件  与Mapper关联
        </bean>
     
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">                                 扫描Mapper,并将其生命周期纳入Spring的管理
            <property name="basePackage" value="com.how2java.mapper"/>
        </bean>
         
    </beans>

    3.扫描的的Controller 里面有拦截/listCategory方法  则由Controller进行处理

    package com.how2java.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.how2java.pojo.Category;
    import com.how2java.service.CategoryService;
    
    // 告诉spring mvc这是一个控制器类
    @Controller
    @RequestMapping("")
    public class CategoryController {
        @Autowired                        //自动配置
        CategoryService categoryService;       
    
        @RequestMapping("listCategory")              //拦截/listCategory
        public ModelAndView listCategory(){
            ModelAndView mav = new ModelAndView();         //创建一个模式和视图的结合
            List<Category> cs= categoryService.list();    
            
            // 放入转发参数
            mav.addObject("cs", cs);
            // 放入jsp路径
            mav.setViewName("listCategory");                 //  绑定jsp文件
            return mav;                                     //  把mav返回jsp中
        }
    
    }

    注:此处的CategoryService是一个接口,而具体实现方法则是CategoryImpl中的,而CategoryImpl中的list方法则是CategoryMapper 中的,而具体的sql语句则在Category.xml文件中

    其中 Category.xml的<mapper namespace="com.how2java.mapper.CategoryMapper">要写到Mapper与其绑定

    @Service表明其是一个Service

    <mapper namespace="com.how2java.mapper.CategoryMapper">
            <insert id="add" parameterType="Category" >
                insert into category_ ( name ) values (#{name})    
            </insert>
            
            <delete id="delete" parameterType="Category" >
                delete from category_ where id= #{id}   
            </delete>
            
            <select id="get" parameterType="_int" resultType="Category">
                select * from   category_  where id= #{id}    
            </select>
    
            <update id="update" parameterType="Category" >
                update category_ set name=#{name} where id=#{id}    
            </update>
            <select id="list" resultType="Category">
                select * from   category_      
            </select>
        </mapper>

    4.最后用listCategory.jsp的foreach循环显示出来

    c:循环获取的单个对象    varStatus:循环的名字  

    <table align='center' border='1' cellspacing='0'>
        <tr>
            <td>id</td>
            <td>name</td>
        </tr>
        <c:forEach items="${cs}" var="c" varStatus="st">              
            <tr>
                <td>${c.id}</td>
                <td>${c.name}</td>
    
            </tr>
        </c:forEach>
    </table>
  • 相关阅读:
    git 工作流程
    微信小程序 scroll-view 水平滚动使用
    微信小程序 tree组件
    微信小程序各类生命周期
    JS/Jquey 图片链接点击直接下载
    JS/Jquery 表单方式提交总结
    Nodejs 发送邮件 激活邮箱
    搭建Nodejs环境 创建Express应用
    break、continue、return区别
    shell(一)
  • 原文地址:https://www.cnblogs.com/Mr-BING/p/10251613.html
Copyright © 2011-2022 走看看