2019-06-04 SSM复习要点

2019-06-04  本文已影响0人  卡布奇诺_7828

SSM复习要点

Spring

Spring是一个管理Bean的容器

三个重要概念:IOC,DI,AOP

bean标签的作用及特点

这个对象在Spring容器加载时即创建该对象

默认是单例的,可以修改scope属性修改为非单例scope="prototype"

class是必须指定的,id不是

Autowired注解的作用

可以注入一个对象,默认是按照类型匹配,所以要求实现类只能有一个,如果有多个需要使用@Qulifier

public class GuanYu{
    @Autowired
    @Qulifier("test2") // 指定test2作为装配对象
    private Weapon weapon;
}
@Component("test1")
public class QingLong implements Weapon {
    private int dps;
    public void setDps(int dps) {
        this.dps = dps;
    }
    public int getDps() {
        return dps;
    }
    public void showInfo() {
        System.out.println("青龙偃月,攻击力很高");
    }
}
@Component("test2")
public class Fang implements Weapon {
    private int dps;
    public void setDps(int dps) {
        this.dps = dps;
    }
    public int getDps() {
        return dps;
    }
    public void showInfo() {
        System.out.println("方天画戟,攻击力很高");
    }
}

依赖注入DI的方式有几种

AOP面向切面编程

其中使用了代理模式

提供了一些注解,如@Before,@Around,@AfterThrowing等

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 数据源dataSource在spring-db.xml中已经配置-->
        <property name="dataSource" ref="dbcpDS" />
    </bean>

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <!--
        第一个 * - 通配 返回值类型
        第二个 * - 通配包com.neuedu.service.impl下的class
        第三个 * - 通配包com.neuedu.service.impl下的class的方法
        第四个 .. - 通配 方法可以有0个或多个参数
        -->
        <!-- advice-ref的值是上面tx:advice标签的id属性的值 -->
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.neuedu.service.impl.*.*(..))"/>
    </aop:config>

Mybatis

mybatis是一个持久层框架

别名设置

<configuration>
    <typeAlias type="com.neuedu.pojo.Userinfo1" alias="user1">
    <typeAlias type="com.neuedu.pojo.Userinfo2" alias="user2">
    <package name="com.neuedu.pojo"></package>
    <package name="com.neuedu.utils"></package>
</configuration>

log4j日志,默认的输出级别是DEBUG

表与表之间的关系

在mapper文件中,常见的标签select,insert,where,if,set,update,delete,sql,include等,没有group标签

<!-- 返回主键 -->
<insert id="addEmp" parameterType="Emp">
    /*
        keyProperty="empno" 主键列
        mysql order=before oracle order=after
    */
    insert into emp(empno,ename,deptno,job) values(#{empno},#{ename},#{deptno},#{job})
    <selectKey order="BEFORE" keyProperty="empno" resultType="Integer"></selectKey>
</insert>

mapper文件中namespace对应接口

<mapper namespace="com.neuedu.mapper.UserinfoMapper"></mapper>

mapper文件中#{}和${}的区别

mapper文件中resultType和resultMap的区别

SpringMVC

SpringMVC中有个负责处理HTTP请求和响应的DispatcherServlet,它叫中央控制器(前端控制器),在web中配置映射

  <!--配置springmvc中央控制器(前端控制器)DispatcherServlet-->
  <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <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>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

SpringMVC处理器方法需要返回数据需要添加注解:@ResponseBody

SpringMVC中,ModelAndView可以保存数据并完成转发,但不能获取数据

@RequestMapping({"/user/add","/user/insert"})映射多个请求

参数绑定时不能直接绑定java.util.Date类型

处理器方法是用String类型作为返回值,使用forward进行转发,使用redirect进行重定向

RESTFUL风格的URL如何获取参数

@Controller
public class TestController{
    @RequestMapping("/user/{id}")
    public void getInfo(@PathVariable("id") int uid){
        
    }
}
上一篇下一篇

猜你喜欢

热点阅读