框架整合:SSM

可以了解,但没啥用了,直接学springboot吧

 

 

XML配置方式: 
优:容易编辑,配置比较集中,方便修改,在大业务量的系统里面,通过xml配置会方便后人理解整个系统的架构,修改之后直接重启应用即可 
缺:比较繁琐,配置形态丑陋, 配置文件过多的时候难以管理 
注解方式: 
优:方便,简洁,配置信息和 Java 代码放在一起,有助于增强程序的内聚性。 
缺:分散到各个class文件中,所以不宜维护, 修改之后你需要重新打包,发布,重启应用。 

小项目,参与人数不多不复杂的, 用注解开发快速。

复杂项目,多人交互,配置量大维护复杂度高的,用配置文件。


Spring+Spring MVC + Mybatis

Spring MVC:负责分发请求,处理数据,返回视图

Spring:IOC容器,可以装载bean(也就是我们Java中的类,当然也包括service dao里面的)

Mybatis:围绕sqlSessionFactory实例展开。通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。


项目目录:

src

| ——com.bean

| ——USER.java                 【实体类】

| ——com.dao

| ——userDAO.java            【CRUD接口】 实现dao接口不用编写daoImpl, mybatis会给我们动态实现

| ——userDAO.xml             【配置CRUD实现】  只需要在xml中编写相应的mapper

| ——com.servise

| ——Service.java            【Service接口】

| ——ServiceImpl.java    【Service实现】

| ——com.controller

| ——Controller.java       【控制器】

| ——applicationContext.xml      【Mybatis配置】

| ——springMVC.xml                  【springMVC配置】

 

WEB-INF

| ——web.xml

| ——jsp

| ——listUser.jsp

 


运行步骤:

1. 首先浏览器上访问路径 /listUser

2. tomcat根据web.xml上的配置信息,拦截到了/listUser,并将其交由DispatcherServlet处理。

3. DispatcherServlet 根据springMVC.xml的配置,将这次请求交由Controller类进行处理,所以需要进行这个类的实例化

4. 在实例化Controller的时候,注入ServiceImpl

5. 在实例化ServiceImpl的时候,又注入DAO

6. 根据ApplicationContext.xml中的配置信息,将DAO和DAO.xml关联起来了。

7. 这样拿到了实例化好了的Controller,并调用listUser()方法

8. 在listUser方法中,访问Service,并获取数据,并把数据放在"user"上,接着服务端跳转到springMVC.xml配置视图定位的路径去

9. 最后在/WEB-INF/jsp/listUser.jsp 中显示数据

 

 


准备数据库表User_

src目录下


com.bean包

    创建实体类User


com.dao包

    DAO.xml和DAO.java放在同一个包下面,并且namespace必须写DAO.java的完整类名

 

DAO.java【CRUD接口】
import cpm.bean.User

public interface userDAO {
    public void add(User user);     
    public void delete(int id);         
    public User get(int id);       
    public void update(User user);           
    public List<User> list();     
    public int count();    
}

 

 

DAO.xml【CRUD实现】
<!-- namespace是该xml对应的接口全名 -->
    <mapper namespace="com.dao.userDAO">

<!-- id对应方法名;parameterType是参数类型;resultType是返回值类型;#{...}中填写的是方法的参数 -->
        <select id="get" parameterType="_int" resultType="User">
            select * from   user_  where id= #{id}    
        </select>

        <insert id="add" parameterType="User" >
            insert into user_ ( name ) values (#{name})    
        </insert>
         
        <delete id="delete" parameterType="User" >
            delete from user_ where id= #{id}   
        </delete>
 
        <update id="update" parameterType="User" >
            update user_ set name=#{name} where id=#{id}    
        </update>

        <select id="list" resultType="User">
            select * from   user_      
        </select>     
    </mapper>

 


 

com.servise包

 

Service.java【Service接口】

public interface Service {
 
    List<User> list();
 
}

@Service标示为一个Service,表示它被Spring管理起来了

 

ServiceImpl.java【Service实现】
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ServiceImpl  implements Service{
    @Autowired
    userDAO dao;//装配userDAO
     
    public List<User> list(){
        return dao.list();
    };
}

 


 

com.controller包

@Controller:标示为控制器。

@RequestMapping("XXX"):把访问路径XXX映射到注释的方法上

 

Controller.java【Controller控制器类】

// 告诉spring mvc这是一个控制器类
@Controller
@RequestMapping("")
public class Controller {
    @Autowired
    Service service;//找到实现了Service接口的类,并装配进来(就是装配ServiceImpl)
 
    @RequestMapping("listUser") // 表示listUser请求由这里处理
    public ModelAndView listUser(){
        ModelAndView mav = new ModelAndView();
        List<User> user= service.list();
         
        // 放入转发参数
        mav.addObject("user", user);
        // 放入视图定位的路径
        mav.setViewName("listUser");
        return mav; //带着user数据返回给视图定位 前缀+listUser+后缀
    }
}

 


applicationContext.xml

 

<!-- 将Service的生命周期纳入Spring的管理:扫描com.service下的注释,生成对应的bean -->
   <context:annotation-config />
    <context:component-scan base-package="com.service" />
 
<!-- 配置数据源 -->
    <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/user?characterEncoding=UTF-8</value>  
      </property>  
      <property name="username">  
          <value>root</value>  
      </property>  
      <property name="password">  
          <value>admin</value>  
      </property>     
    </bean>

<!-- 扫描com/dao/下存放SQL语句的DAO.xml -->     
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="typeAliasesPackage" value="com.bean" />
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:com/dao/*.xml"/>
    </bean>

<!-- 扫描DAO,并将其生命周期纳入Spring的管理 -->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dao"/>
    </bean>

 


springMVC.xml

 

<!-- 扫描Controller,并将其生命周期纳入Spring管理 -->
    <context:annotation-config/>
    <!-- 表示从包controller下扫描有@Controller注解的类 -->
    <context:component-scan base-package="com.controller">
          <context:include-filter type="annotation"
          expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

<!-- 注解驱动,以使得访问路径与方法的匹配可以通过注解配置 --> 
    <mvc:annotation-driven />
<!-- 静态页面,如html,css,js,images可以访问 -->     
    <mvc:default-servlet-handler />
 
    <!-- 视图定位到 /WEB-INF/jsp/*.jsp 这个位置 -->
    <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/" />
        <property name="suffix" value=".jsp" />
    </bean>

 

 

 

 

WEB-INF下


web.xml配置

1. 通过ContextLoaderListener在web app启动的时候,获取contextConfigLocation配置文件的文件名applicationContext.xml,并进行Spring相关初始化工作
2. 有任何访问,都被DispatcherServlet所拦截,这就是Spring MVC工作机制了

 

<web-app ······>
     
    <!-- spring的配置文件。【启动时获取applicationContext.xml】 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
     
    <!-- spring mvc核心:分发servlet。【拦截配置的请求提交到DispatcherServlet】 -->
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- spring MVC需要加载的配置文件 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springMVC.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern> <!-- / 表示全部拦截; *.do 只拦截.do结尾的,过滤静态资源 -->
    </servlet-mapping>
     
</web-app>

 


jsp目录

 

listUser.jsp

 

    <c:forEach items="${user}" var="c" varStatus="st">
        <tr>
            <td>${c.id}</td>
            <td>${c.name}</td>            
        </tr>
    </c:forEach>

 

 

 

 

 

 

 

 

 

1. 首先浏览器上访问路径 /listUser

2. tomcat根据web.xml上的配置信息,拦截到了/listUser,并将其交由DispatcherServlet处理。

3. DispatcherServlet 根据springMVC的配置,将这次请求交由Controller类进行处理,所以需要进行这个类的实例化

4. 在实例化Controller的时候,注入ServiceImpl

5. 在实例化ServiceImpl的时候,又注入DAO

6. 根据ApplicationContext.xml中的配置信息,将DAO和DAO.xml关联起来了。

7. 这样拿到了实例化好了的Controller,并调用listUser()方法

8. 在listUser方法中,访问Service,并获取数据,并把数据放在"user"上,接着服务端跳转到listUser.jsp去

9. 最后在listUser.jsp 中显示数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xyc1211

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值