自我学习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>

 

posted @ 2019-01-10 18:15  饼先生  阅读(289)  评论(1编辑  收藏