51. 框架的设计含义是什么?
《设计模式》中对框架的定义是框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。
框架不是现成可用的应用系统。是一个半成品。
框架不是工具包或者类库
框架不是构架
【框架是服务开发人员的,而非限制开发人员。如何让使用者发挥效率,又能引导其实现更具灵活性的功能设计。是框架的本质。
框架本身并不关注业务,至少不受业务影响或制约。框架就是要从具体的业务功能中,分离出能覆盖所有业务的设计、实现与组成。并使得各业务功能从开发实现的角度,变的解耦合、可重组、易维护。
框架也会进化,其进化过程就是一个设计权衡的过程。一个典型的设计权衡过程就是目录结构设计。】
52. SSM和SpringBoot框架对比?
Springboot 将原有的 xml 配置,简化为 java 注解
使用 IDE 可以很方便的搭建一个 springboot 项目,选择对应的 maven 依赖,简化Spring应用的初始搭建以及开发过程
springboot 有内置的 tomcat 服务器,可以 jar 形式启动一个服务,可以快速部署发布 web 服务
springboot 使用 starter 依赖自动完成 bean 配置,,解决 bean 之间的冲突,并引入相关的 jar 包
SpringBoot和SSM不冲突,SpringBoot只是简化了配置,实际开发 没什么区别。SSM就好像开手动挡的汽车,需要踩离合,挂档,给油车才能开动。而SpringBoot就好像自动挡的汽车,给油就走,踩刹车就停。
【1.简化配置
在整合 SSM 的时候,需要将大量配置写入 xml 文件中;
Spring Boot 采用约定大于配置的方式,所谓约定大于配置,在 Spring Boot 中体现在开发人员只需要关注应用中不符合约定的部分:比如默认的 WEB 容器端口是 8080,只有当开发人员想要修改时才需要去写这一部分的配置。
2.内置容器
在 SSM 整合中,运行项目需要依赖外部的 Servlet ,比如常用的是 tomcat;
在 Spring Boot 框架中,内置了 tomcat 容器,打包后会生成 jar 包,更加方便部署。Spring Boot 的内置框架支持切换,通过修改 maven 依赖,可以很方便地实现 tomcat、jetty、undertow 三种容器之间的切换。
3.更快速的开发
使用 SSM 开发一个应用需要繁琐的配置过程;
使用 Spring Boot 开发一个应用只需要生成项目,引入 starter 即可,简化了开发的难度。】
53. 常见的应用服务器有哪些?
Tomcat Jboss Websphere Weblogic Geronimo Resin Jetty Undertow Glassfish JRun Jonas ColdFusion
【Tomcat:免费开源,轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。只实现了JSP/Servlet的相关规范,不支持EJB
Jboss:免费开源,作为Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,从而受到企业级开发人员的欢迎,从而弥补了Tomcat只是一个Servlet容器的缺憾。
Websphere:是IBM的收费平台,价格昂贵,单买一个但CPU的服务器也要十几万。除了web应用服务器还包含大量的工具和其他相关应用开发平台。正常EJB
weblogic:收费,包括EJB,JSP,Servlet,JMS等等,全能型的。是商业软件里排名第一的容器(JSP、servlet、EJB等),并提供其他如JAVA编辑等工具,是一个综合的开发及运行环境。
Geronimo:是对Java EE 5标准100%的实现,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
Resin: 收费,是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。支持负载均衡。resin的速度要比tomcat快3倍,调试方便,resin的报错是十分简洁而明确的,可以让你一眼就可以看出程序错误的类型和位置,resin对于中文的支持要比tomcat好不少
jetty 免费开源,架构比较简单,也是一个可扩展性和非常灵活的应用服务器。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供
undertow:是一个用java编写的、灵活的、高性能的Web服务器,提供基于NIO的阻塞和非阻塞API。Undertow的架构是组合式的,可以通过组合各种小型的目的单一的处理程序来构建Web服务器。所以可以很灵活地的选择完整的Java EE servlet 3.1容器或初级非阻塞程序处理。
glassfish是Oracle 开发的官方Java EE容器,,也是同时支持Servlet和EJB,支持最新的特性,有自己的web容器,支持集群,支持热部署。
JRun:是由Allaire公司开发的JAVA服务器软件,它支持JSP1.1、Servlet2.2规范,目前最新的版本是JRun4,但是它的下载是要付费,它是Micromedia的一个应用服务器,它基于Sun公司的Java2平台企业版(J2EE)。
Jonas:一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet 2.3和JSP 1.2规范。JOnAS服务器依赖或实现以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。
ColdFusion是一个动态Web服务器,其CFML(ColdFusion Markup Language)是一种程序设计语言,类似现在的JavaServer Page里的JSTL(JSP Standard Tag Lib),从1995年开始开发,其设计思想被一些人认为非常先进,被一些语言所借鉴。】
54. 什么是Maven?
Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Maven的核心功能是合理叙述项目间的依赖关系,通俗点 就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包,其本质就是通过配置pom.xml来获取jar包,当然这是在该项目必须是maven项目的前提下。在java项目和web项目上裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能,即通过pom.xml添加jar包 。
55. 什么是pom文件?
POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。
56. 什么是SpringBoot 框架?
Spring Boot 是伴随 Spring 4 而产生的技术框架,具备良好的技术基因。在继承 Spring 框架所有优点的同时,它也为开发人员带来了巨大的便利。与普通的 Spring 项目相比,Spring Boot 可以简化项目的配置和编码,使项目部署更方便,而且它还为开发人员提供了“开箱即用”的良好体验,可以进一步提升开发效率。
57. 谈谈你对“约定大于配置”的理解
能使用默认,就使用默认。当存在特殊需求的时候,自定义配置即可。这样可以大大的减少配置工作,这就是所谓的“约定”。
【比如说大家提前都约定好了创建对象就要使用new关键字,你要是想创建这个对象,那就要先使用new,你要先按照大家约定好的去做,然后在使用这个对象去做你想做的。你要是连大家约定好的都不做,那哪来的对象?我觉得这句话更像是一个代码界的法律吧,一种写代码的行为规范。】
58. SpringBoot默认可以识别JSP文件吗?怎么处理?
SpringBoot微服务架构,所有项目都是以jar文件方式打包部署,嵌入式的Tomcat(简化版,不支持JSP),所以SpringBoot默认是不支持JSP的,那么如果想要整合JSP,就需要独立引入整合依赖,和基础配置。 SpringBoot 默认存放模版文件的路径为 src/main/resources/templates,但由于SpringBoot默认是不支持JSP的,所以我们不能将JSP文件放在templates目录下。
59. SpringBoot 的工作流程?
应用启动阶段:Spring Boot应用程序在启动时,会自动加载应用程序的配置文件,并创建Spring容器。Spring Boot还提供了一系列自动化配置功能,可以根据应用程序的需求自动配置Bean、组件、拦截器、过滤器等。
路由配置阶段:Spring Boot应用程序在启动后,需要配置路由信息,以便将请求分发到相应的处理器上。Spring Boot使用注解方式来配置路由信息,比如@Controller、@RequestMapping等注解,可以通过简单的配置实现路由信息的定义。
处理请求阶段:Spring Boot应用程序在接收到请求后,会将请求交给相应的处理器进行处理。处理器是Spring Boot应用程序中最核心的组件之一,它可以根据请求类型、参数等信息来执行相应的业务逻辑,并返回结果给客户端。
视图渲染阶段:Spring Boot应用程序在处理请求后,需要将处理结果渲染成相应的视图,并返回给客户端。Spring Boot支持多种视图渲染方式,包括JSP、Thymeleaf、Freemarker等。通过配置ViewResolver,可以实现视图渲染的自动化。
错误处理阶段:Spring Boot应用程序在处理请求过程中,可能会出现各种错误,比如404错误、500错误等。Spring Boot提供了一种统一的错误处理机制,可以将所有的错误信息统一处理,并返回相应的错误信息给客户端。
60. 什么是Shiro?默认主配置文件是什么?
Apache Shiro 是Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与Web 集成、缓存等。
shiro.ini
61.常见的前端框架有哪些
Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架