仿牛客网项目笔记第一章

1Spring入门

        定义数据访问组件AlphaDao、业务组件AlphaService、控制器AlphaController,并通过注解的方式将它们委托给Spring容器。 注解分别是@Repository@Service@Controller@Autowiredd注入   


 1.1随堂练习

        1、关于Spring IoC,以下说法正确的是()

        A、IoC是控制反转的意思,这是一种面向对象的编程思想。

        B、IoC是控制反转的意思,这是一种面向切面编程的思想。

        C、Spring采用依赖注入的方式,实现了IoC思想。

        D、Spring采用依赖查找的方式,实现了IoC思想。

        答案:A、C

        2、下面所列举的各项功能中,哪些不是Spring Framework的功能()

        A、Transactions

        B、Compile

        C、Scheduling

        D、Security

        答案:B

        3、关于Spring全家桶,下面说法错误的是()

        Spring Framework是Spring家族的基石,其他框架都依赖它

        Spring Boot可以简化服务端开发,它可以完全代替Spring Framework

        Spring Cloud用于微服务开发,可以将多个子项目协调在一起工作

        Spring Cloud Data Flow用于多客户端应用,可以将不同终端的数据整合到一起

        答案:B

        4、关于Spring容器,下面说法错误的是()

        Spring容器也叫IoC容器,本质上就是一个工厂

        Spring容器不但可以管理Bean,还能管理Bean的生命周期、作用域

        一个web应用中,通常只有一个Spring容器,该容器需要我们主动创建

        Spring容器的顶层接口是BeanFactory,而常用的是其子接口ApplicationContext

        答案:C

        5、关于IoC注解,下面说法正确的是()

        @Autowired用于注入Bean,该注解只能写在成员变量的前面

        @Qualifier用于声明Bean的名称,该注解只能引用Bean的自定义名称。

        @Bean用于装配第三方的Bean,它不能装配自定义的Bean

        @Configuration用于声明配置类,该注解是基于@Component实现的

        答案:D,除了成员变量,@Autowired还可以写在set方法和构造器前,@Qualifier 也可以引用默认名称, @Bean 可以装配任何Bean


2SpringMVC入门

        Get、Post请求

        响应HTML格式的数据

        响应JSON数据(@ResponseBody)、响应JSON数据(异步请求:网页不刷新,但访问了服务器)、 Java对象 --> JSON字符串(衔接作用) --> JS对象


2.1随堂练习

        1、下列关于HTTP协议的描述中,错误的是()

        HTTP协议是应用层协议,它的底层基于UDP连接

        HTTP协议规定了浏览器与服务器通信的四个步骤,依次是:建立连接、发送请求、接收响应、关闭连接

        HTTP请求报文中,包含请求方式、请求路径、协议版本、消息头等内容

        HTTP响应报文中,包含状态码、状态名、协议版本、消息头等内容

        答案:A、底层是基于TCP

        2、下列关于Spring MVC的描述中,错误的是()

        Spring MVC应用于表现层,降低了表现层代码的耦合度

        Spring MVC的核心组件是DispatcherServlet,它负责分发所有的请求

        MVC指代服务端的三层架构,即数据层、业务层、表现层

        Model是Controller与View沟通的桥梁,我们必须主动实例化Model对象

        答案:C、D。MVC:Model、View、Controller都在表现层,会自动实例化Model对象。

        3、Thymeleaf是目前最流行的模板引擎,下列关于Thymeleaf的描述中正确的是()

        Thymeleaf倡导自然模板,即以HTML文件为模板

        Thymeleaf支持的语法有:标准表达式、判断与循环、模板的布局等

        Thymeleaf生成动态HTML的前提是,你要为它提供模板文件与动态数据

        表达式${name}中的name,是从Request对象中获取的参数

        答案:A、B、C,表达式从Model中获取数据。

        4、下列关于Spring MVC注解的描述中,错误的是()

        @RequestMapping可以声明类或方法的访问路径,还可以声明请求的方式

        @PathVariable可以将请求路径中的参数,绑定到控制器中方法的参数

        @RequestParam可以将请求对象中的参数,绑定到控制器中方法的参数

        @ResponseBody用于向浏览器响应字符串,它只能应用于异步请求之中

        答案:D,浏览器向服务器传参有两种方式,一是在通过get请求,在路径后加问号携带参数,如/xxx?id=1。另一种是通过post请求,在request请求体中携带表单中的参数,这种参数在路径上是看不到的。这两种方式所传的参数,在服务端都可以通过request.getParameter(参数名)这样的方式来获取。而@RequestParam注解,就相当于是request.getParameter(),是从request对象中获取参数的。有时,我们也愿意利用请求路径本身来传参,即将参数拼到路径里,如/xxx/1,这里的1就是参数,那么在解析路径的时候,也是能获取到这个参数的。而@PathVarible就是解析路径,从中获得对应级次的参数。

        5、关于Spring MVC开发,下列说法正确的是()

        在控制器的方法中,我们可以直接使用Request、Response对象处理请求与响应

        ModelAndView对象,既可以存储模型数据,又可以存储模板路径

        Model对象只能存放模型数据,它和ModelAndView一样,需要主动实例化

        默认情况下,Spring MVC会从/templates目录下加载模板和静态资源

        答案:A、B,Model中可以存放任何数据,可以自动实例化,静态资源在static目录下


3MyBatis入门

        通过MyBatis访问用户表,完成如下的功能:

        1. 根据ID查询一个用户。

        2. 根据用户名查询一个用户。

        3. 根据邮箱查询一个用户。

        4. 插入一个用户。

        5. 根据ID修改用户的状态。

        6. 根据ID修改用户的头像路径。

        7. 根据ID修改用户的密码。


3.1随堂练习

        1、下列关于MyBatis核心组件的说法中,错误的是()

        SqlSessionFactory,是用于创建SqlSession的工厂类

        SqlSession,用户向数据库执行SQL语句

        Mapper接口用于定义数据库访问行为,它必须由@Mapper注解进行标记

        Mapper映射器用于编写SQL,采用XML、注解均可实现

        答案:C,如果是springboot,在启动类中使用@MapperScan("mapper接口所在包全名")即可,不用一个一个的在Mapper接口中加@Mapper注解。@Mapper注解是识别他为mybatis的mapper接口,会自动的把 加@Mapper 注解的接口生成动态代理类。

        2、下列关于连接池的说法中,正确的是()

        连接池可以管理连接的上限,避免数据库因超负荷而崩溃。

        连接池可以管理连接对象,使得连接对象能够复用,减少创建连接的开销。

        连接池也叫数据源,MyBatis内置的连接池是HikariDataSource。

        Spring Boot内置了连接池,可以通过DataSourceProperties对其进行配置。

        答案:A、B、D,HikariDateSource是一个独立的包

        3、采用XML实现Mapper映射器,下列说法错误的是()

        <mapper>标签的namespace属性,用于声明该配置文件所对应的接口

        <sql>标签用于定义可以复用的SQL片段

        在<select>标签上,可以利用resultType属性声明返回值类型

        表达式#{username},用于从数据库中获取username字段的值

        答案:D、不是从数据库中取值,而是获取你传入的条件参数值。&lt;代表小于号<, &gt;代表大于号>

        4、在XML映射文件中,可以从User类型的参数中获取username属性的表达式为()

        ${user.username}

        ${username}

        # {user.username}

        # {username}

        答案:D

        5、已知user表的主键字段为id,用户头像字段为header_url。现在Mapper接口中定义了根据主键更新用户头像的方法,该方法包含2个参数,分别是id、headerUrl。在XML映射文件中,可以正确实现该方法的SQL是()

        update user set headerUrl = #{header_url} where id = # {id}

        update user set header_url = #{headerUrl} where id = # {id}

        update user set headerUrl = #{headerUrl} where id = # {id}

        update user set header_url = #{header_url} where id = # {id}

        答案:B


4、开发者社区首页

        查询最新的10个帖子,将其显示在首页上。

         开发分页组件,按照分页的方式查询帖子,并显示在首页上。

        首先定义一个Page实体类,里面包含当前页、显示条数上限、总行数等。之后在访问首页时,在Controller中调用getIndexPage自定义方法。在该方法中根据当前页的起始行和显示条数上限查询数据库中数据。最后返回到浏览器首页。


4.1、随堂练习

        1、下列基于MySQL的分页语句中,正确的是()

        select * from … where … order by … limit 0, 10

        select * from … where … order by … limit 0 10

        select * from … where … limit 0, 10 order by …

        select * from … where … limit 0 10 order by …

        答案:A

        2、帖子表包含用户主键字段,名为user_id,在查询帖子的方法上,有参数userId。要求参数不为0时,将其拼入到where子句中,用以筛选用户。下列拼写动态SQL的语法中,正确的是()

        where status != 2 &lt;if test=”${userId!=0}”&gt;and user_id=#{userId}&lt;/if&gt;

        where status != 2 &lt;if test=”userId!=0”&gt;and user_id=#{userId}&lt;/if&gt;

        where status != 2 &lt;if test=”${user_id!=0}”&gt;and user_id=#{userId}&lt;/if&gt;

        where status != 2 &lt;if test=”user_id!=0”&gt;and user_id=#{userId}&lt;/if&gt;

        答案:B

        3、在编写MyBatis的Mapper接口时,可以用@Param注解为参数取别名,下列关于该注解的描述中,正确的是()

        无论方法有多少个参数,都必须用@Param注解为每个参数取别名

        当方法只有一个参数时,就必须用@Param注解为这个参数取别名

        当方法包含多个参数,并且这些参数都应用在&lt;if&gt;上时,就必须用@Param注解为这些参数取别名

        当方法只有一个参数时,并且该参数应用在&lt;if&gt;上时,就必须用@Param注解为该参数取别名

        答案:D

        4、通过Thymeleaf遍历集合,下列给出的代码中正确的是()

        th:foreach=”obj:${list}”

        th:foreach=”${obj:list}”

        th:each=” obj:${list}”

        th:each=” ${obj:list}”

        答案:C

        5、在<u class=”mr-3”>寒江雪</u> 发布于 <b _____></b>的HTML标签上,为了正确格式化发布日期,应该填写

        th:text=${#dates.format(createTime, ’yyyy-MM-dd HH:mm:ss’)}

        th:text=${#dates.format(’yyyy-MM-dd HH:mm:ss’, createTime)}

        th:text=# {$dates.format(createTime, ’yyyy-MM-dd HH:mm:ss’)}

        th:text=# {$dates.format(’yyyy-MM-dd HH:mm:ss’, createTime)}

        答案:A


5、项目调试技巧

        5.1随堂练习

        1、下列关于响应状态码的描述中,错误的是()

        200表示请求成功,服务器已经返回了正确的响应信息

        302表示请求失败,服务器认为你没有访问权限,从而拒绝执行该请求。

        404表示请求失败,在服务器上没有找到你所请求的资源。

        500表示请求失败,服务器在执行请求的过程中发生了错误。

        答案:B,重定向,所请求的资源已经移动到由'Location'响应头给定的URL,浏览器会自动重新访问到这个页面

        2、下面列举的各项功能中,哪一项不是断点调试所具备的功能()

        跟踪程序执行的过程

        查看程序执行过程中,各个变量的值

        判断某段程序是否可以被调用

        判断程序是否得到了正确的编译

        答案:D

        3、Logback支持5种日志级别,其中最低的级别是()

        debug

        info

        warn

        Trace

        答案:D,trace < debug < info < warn < error

        4、对于Spring Boot项目,下列关于设置日志级别的描述中,正确的是()

        可以在application.properties中设置日志级别

        可以在xml中设置logback的日志级别

        可以按照日志级别,拆分logback的日志

        不能把所有级别的日志,打印到同一个日志文件里

        答案:A、B、C

        5、下列记录日志的代码中,错误的是()

        logger.bug(“xxx”);

        logger.info(“xxx”);

        logger.warn(“xxx”);

        logger.error(“xxx”);

        答案:A,debug

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值