当前位置: 首页 > news >正文

哪里有网站开发技术如何加快门户网站建设

哪里有网站开发技术,如何加快门户网站建设,做漫画网站空间多大,摄影网站建设的意义什么是Spring框架#xff1f;使用Spring框架的好处是什么#xff1f;Spring是一款开源的轻量级Java开发框架#xff0c;可以提高开发人员的开发效率以及系统的可维护性。Spring框架是很多模块的集合#xff0c;使用这些模块可以很方便地协助我们进行开发#xff0c;比如说…什么是Spring框架使用Spring框架的好处是什么Spring是一款开源的轻量级Java开发框架可以提高开发人员的开发效率以及系统的可维护性。Spring框架是很多模块的集合使用这些模块可以很方便地协助我们进行开发比如说Spring支持IoC控制反转通过控制反转实现了松散耦合Spring支持AOP面向切面编程可以把应用业务逻辑和系统服务分开。Spring容器包含并管理应用中对象的生命周期和配置Spring提供了一个持续的事务管理接口可以扩展到上至本地事务下至全局事务。Spring的核心是什么Spring框架包含众多模块如Core、Test、Data Access、Web 等其中Core是整个Spring框架的核心模块。Core模块提供了IoC容器、AOP、数据绑定、类型转换等功能而这些功能以及其他模块的功能都是建立在IoC和AOP之上的所以IoC和AOP是Spring框架的核心。IoC控制反转这是一种面向对象编程的设计思想在不采用这种思想的情况下我们需要自己维护对象与对象之间的依赖关系很容易造成对象之间的耦合度过高。IoC可以帮我们维护对象与对象之间的依赖关系降低对象之间的耦合度。IoC 容器就像是一个工厂一样当我们需要创建一个对象的时候只需要配置好配置文件/注解即可不用考虑对象是如何被创建出来的。AOPAspect Oriented Programing是面向切面编程思想我们可以将解决共性需求的代码独立出来然后通过配置的方式声明这些代码在什么地方、什么时机调用。当满足调用条件时AOP会将该业务代码织入到我们指定的位置从而统一解决了问题。能够将那些与业务无关却为业务模块所共同调用的逻辑或责任例如事务处理、日志管理、权限控制等封装起来这样便于减少系统的重复代码降低模块间的耦合度并有利于未来的可拓展性和可维护性。Spring容器Spring主要提供了两种类型的容器BeanFactory和ApplicationContext。BeanFactoryBeanFactory是类的通用工厂它可以创建并管理各种类的对象。这些可被创建和管理的对象称为Bean所有可以被Spring容器实例化并管理的Java类都可以成为Bean。BeanFactory提供完整的IoC服务支持如果没有特殊指定默认采用延迟初始化策略。只有当客户端对象需要访问容器中的某个受管对象的时候才对该受管对象进行初始化以及依赖注入操作。ApplicationContext它是在BeanFactory的基础上构建的除了拥有BeanFactory的所有支持ApplicationContext还提供了其他高级特性比如事件发布、国际化信息支持等。ApplicationContext所管理的对象在该类型容器启动之后默认全部初始化并绑定完成。所以相对于BeanFactory来说ApplicationContext要求更多的系统资源同时因为在启动时就完成所有初始化容器启动时间较之BeanFactory也会长一些。你对Spring IOC的理解IoC控制反转这是一种面向对象编程的设计思想在不采用这种思想的情况下我们需要自己维护对象与对象之间的依赖关系很容易造成对象之间的耦合度过高。IoC可以帮我们维护对象与对象之间的依赖关系并由 IoC 容器完成对象的注入降低对象之间的耦合度。IoC 容器就像是一个工厂一样当我们需要创建一个对象的时候只需要配置好配置文件/注解即可不用考虑对象是如何被创建出来的。在具体的实现中主要由三种注入方式1构造方法注入被注入对象可以在它的构造方法中声明依赖对象的参数列表让外部知道它需要哪些依赖对象。然后IoC Service Provider会检查被注入的对象的构造方法取得它所需要的依赖对象列表进而为其注入相应的对象。构造方法注入方式比较直观对象被构造完成后即进入就绪状态可以马上使用。2setter方法注入当前对象只要为其依赖对象所对应的属性添加setter方法就可以通过setter方法将相应的依赖对象设置到被注入对象中。3接口注入被注入对象如果想要IoC Service Provider为其注入依赖对象就必须实现某个接口。这个接口提供一个方法用来为其注入依赖对象。IoC Service Provider最终通过这些接口来了解应该为被注入对象注入什么依赖对象。什么是Spring Bean将一个类声明为Bean的注解有哪些?被IOC容器管理的对象称为Bean。我们可以通过XML 文件、注解或者Java配置类的方式告诉 IoC容器帮助我们管理哪些对象。Component通用的注解可标注任意类为Spring组件。如果一个 Bean 不知道属于哪个层可以使用Component 注解标注。Repository对应Dao持久层层主要用于数据库相关操作。Service对应服务层。Controller : 对应 Spring MVC 控制层主要用于接受用户请求并调用Service 层返回数据给前端页面。Spring是如何管理Bean的Spring通过IoC容器来管理Bean我们可以通过XML配置或者注解配置来指导IoC容器对Bean的管理。Component、Repository、Service、Controller用于声明BeanAutowired、Qualifier和Resource用于注入Bean。AutoWired根据Bean的类型自动注入Qualifier根据Bean名称自动注入Resourse根据Bean类型或Bean名称自动注入。Bean的生命周期Spring容器管理Bean涉及对Bean的创建、初始化、调用、销毁等一系列的流程这个流程就是Bean的生命周期。这个过程是由Spring容器自动管理。Bean的作用域singletonIoC 容器中只有唯一的 bean 实例Bean以单例的形式存在。prototype每次获取都会创建一个新的bean实例。request每一次HTTP 请求都会产生一个新的 bean该bean仅在当前HTTP request内有效。session 每一次来自新session的HTTP请求都会产生一个新的bean该 bean 仅在当前HTTP session内有效。application/global-session每个Web 应用在启动时创建一个Bean该bean仅在当前应用启动时间内有效。单例Bean的线程安全问题Spring容器本身并没有提供Bean的线程安全策略。如果单例的Bean是一个无状态的Bean即线程中的操作不会对Bean的成员执行查询以外的操作那么这个单例的Bean是线程安全的。比如Controller、Service、DAO这样的组件通常都是单例且线程安全的。单例Bean存在线程问题主要是因为当多个线程操作同一个对象的时候是存在资源竞争的。常见的有两种解决办法是①在Bean 中尽量避免定义可变的成员变量②在类中定义一个ThreadLocal 成员变量将需要的可变成员变量保存在 ThreadLocal 中。Autowired和Resource注解有什么区别Autowired是Spring提供的注解Resource是JDK提供的注解。Autowired是只能按类型注入Resource默认按名称注入也支持按类型注入。你对Spring AOP的理解AOP是面向切面编程面向对象编程将程序抽象成各个层次的对象而面向切面编程是将程序抽象成各个切面。切面相当于应用对象间的横切点我们可以将其单独抽象为单独的模块。这样便于减少系统的重复代码降低模块间的耦合度并有利于未来的可拓展性和可维护性。Spring AOP支持如下两种实现方式1JDK动态代理这是Java提供的动态代理技术可以在运行时创建接口的代理实例。Spring AOP默认采用这种方式在接口的代理实例中织入代码。2CGLib动态代理采用底层的字节码技术在运行时创建子类代理的实例。当目标对象不存在接口时Spring AOP就会采用这种方式在子类实例中织入代码。AOP的应用场景Spring AOP为IoC的使用提供了更多的便利一方面应用可以直接使用AOP的功能设计应用的横切关注点把跨越应用程序多个模块的功能抽象出来并通过简单的AOP的使用灵活地编制到模块中比如可以通过AOP实现应用程序中的日志功能。另一方面在Spring内部一些支持模块也是通过Spring AOP来实现的比如事务处理。AOP 的代理有哪几种方式1JDK动态代理这是Java提供的动态代理技术可以在运行时创建接口的代理实例。Spring AOP默认采用这种方式在接口的代理实例中织入代码。2CGLib动态代理采用底层的字节码技术在运行时创建子类代理的实例。当目标对象的实现类没有实现接口时Spring AOP就会采用这种方式在子类实例中织入代码。AOP的术语连接点目标对象的所属类中定义的所有方法均为连接点。切入点被切面拦截/ 增强的连接点。通知增强的逻辑/ 代码即拦截到目标对象的连接点之后要做的事情。目标对象即被代理对象。织入它是一个通过动态代理技术为原有服务对象生成代理对象然后将与切点定义匹配的连接点拦截并按约定将各类通知织入约定流程的过程。切面是一个可以定义切点、各类通知和引入的内容SpringAOP将通过它的信息来增强Bean的功能或者将对应的方法织入流程。Spring AOP和AspectJ AOP有什么区别Spring AOP属于运行时增强而AspectJ是编译时增强。 Spring AOP基于代理而AspectJ基于字节码操作。Spring AOP已经集成了AspectJAspectJ 相比于 Spring AOP 功能更加强大但是Spring AOP相对来说更简单如果切面太多最好选择AspectJ它比Spring AOP快很多。Spring如何管理事务编程式事务Spring提供了TransactionTemplate模板利用该模板我们可以通过编程的方式实现事务管理而无需关注资源获取、复用、释放、事务同步及异常处理等操作。相对于声明式事务来说这种方式相对麻烦一些但是好在更为灵活我们可以将事务管理的范围控制的更为精确。声明式事务它允许我们通过声明的方式在IoC配置中指定事务的边界和事务属性Spring会自动在指定的事务边界上应用事务属性。只需要在需要做事务管理的方法上增加Transactional注解以声明事务特征即可。Spring的事务如何配置常用注解有哪些事务的打开、回滚和提交是由事务管理器来完成的我们使用不同的数据库访问框架就要使用与之对应的事务管理器。使用Transactional进行标注来声明式事务这个注解可以标注在类或者方法上。当它标注在类上时代表这个类所有公共非静态的方法都将启用事务功能。当它标注在方法上时代表这个方法将启用事务功能。Spring的事务传播方式有哪些Spring在TransactionDefinition接口中规定了7种类型的事务传播行为它们规定了事务方法和事务方法发生嵌套调用时如何进行传播。1PROPAGATION_REQUIRED如果当前没有事务则新建一个事务如果已存在一个事务则加入到这个事务中。2PROPAGATION_SUPPORTS支持当前事务如果当前没有事务则以非事务方式执行。3PROPAGATION_MANDATORY使用当前的事务如果当前没有事务则抛出异常。4PROPAGATION_REQUIRES_NEW新建事务如果当前存在事务则把当前事务挂起。5PROPAGATION_NOT_SUPPORTED以非事务方式执行操作如果当前存在事务则把当前事务挂起。6PROPAGATION_NEVER以非事务方式执行操作如果当前存在事务则抛出异常。7PROPAGATION_NESTED如果当前存在事务则在嵌套事务内执行如果当前没有事务则执行与PROPAGATION_REQUIRED类似的操作Spring 事务中的隔离级别有哪几种?1ISOLATION_DEFAULT使用后端数据库默认的隔离级别MySQL 默认采用的 REPEATABLE_READ 隔离级别Oracle 默认采用的 READ_COMMITTED 隔离级别.2ISOLATION_READ_UNCOMMITTED最低的隔离级别使用这个隔离级别很少因为它允许读取尚未提交的数据变更可能会导致脏读、幻读或不可重复读3ISOLATION_READ_COMMITTED允许读取并发事务已经提交的数据可以阻止脏读但是幻读或不可重复读仍有可能发生。4ISOLATION_REPEATABLE_READ对同一字段的多次读取结果都是一致的除非数据是被本身事务自己所修改可以阻止脏读和不可重复读但幻读仍有可能发生。5ISOLATION_SERIALIZABLE最高的隔离级别完全服从ACID 的隔离级别。所有的事务依次逐个执行这样事务之间就完全不可能产生干扰也就是说该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。说说对于Spring MVC的了解?MVC是一种设计模式在这种模式下软件被分为三层即Model模型、View视图、Controller控制器。Model是程序的主体部分主要包含业务数据和业务逻辑View是程序呈现给用户的部分是用户和程序交互的接口Controller代表的是数据的处理逻辑它是Model和View这两层的桥梁。将软件分层的好处是可以将对象之间的耦合度降低便于代码的维护。Spring MVC的执行流程1客户端浏览器发送请求DispatcherServlet捕获请求。2DispatcherServlet对请求URL进行解析得到请求资源标识符URI。HandlerMapping根据URI去匹配查找能处理的Handler也就是我们平常说的 Controller 控制器。3DispatcherServlet根据获得的Handler选择一个合适的HandlerAdapter。4Handler完成对用户请求的处理后会返回一个ModelAndView对象给DispatcherServletModelAndView包含了数据模型以及相应的视图的信息。Model是返回的数据对象View是个逻辑上的View。5ViewResolver会根据逻辑视图查找实际的视图。6当得到真实的视图对象View后DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。7将渲染结果返回给客户端。Spring MVC的核心组件有哪些DispatcherServlet前端控制器统一处理请求和响应整个流程控制的中心由它调用其它组件处理用户的请求。HandlerMapping处理器映射器根据请求的url、method等信息查找Handler即控制器方法。HandlerAdapter处理器适配器根据HandlerMapping找到的Handler适配执行对应的HandlerHandler处理器处理实际请求。ViewResolver视图解析器根据Handler 返回的逻辑视图解析并渲染真正的视图并传递给 DispatcherServlet 响应客户端。View视图将模型数据通过页面展示给用户。Spring MVC注解RequestMapping用于处理请求URL映射将请求和处理请求的方法关联起来建立映射关系。用于类上则表示类中的所有响应请求的方法都是以该地址作为父路径RequestBody接收HTTP请求的json数据将json转换为Java对象ResponseBody将Controller方法返回对象转化为json对象响应给客户。RequestParam将形参名和请求参数创建映射关系。Spring MVC的拦截器SpringMVC中的拦截器用于拦截控制器方法的执行拦截器需要实现HandlerInterceptor接口SpringMVC中的拦截器有三个抽象方法1preHandle控制器方法执行之前执行preHandle()其boolean类型的返回值表示是否拦截或放行返回true为放行即调用控制器方法返回false表示拦截即不调用控制器方法2postHandle控制器方法执行之后执行postHandle()3afterComplation处理完视图和模型数据渲染视图完毕之后执行afterComplation()。SpringMVC的重定向和转发当控制器方法中所设置的视图名称以redirect:为前缀时创建RedirectView视图此时的视图名称不会被SpringMVC配置文件中所配置的视图解析器解析而是会将前缀redirect:去掉剩余部分作为最终路径通过重定向的方式实现跳转。转发只需要使用“”即可。说说你对Spring Boot的理解从本质上来说Spring Boot就是Spring使用Spring Boot可以不用或者只需要很少的Spring配置。Spring Boot本身并不提供Spring的核心功能而是作为Spring的脚手架框架以达到快速构建项目、预置三方配置、开箱即用的目的。SpringBoot有哪些优点1Spring Boot 而且内嵌了各种servlet容器Tomcat等现在不再需要打成war包部署到容器中Spring Boot只要打成一个可执行的jar包就能独立运行所有的依赖包都在一个jar包内。2spring-boot-starter-web启动器自动依赖其他组件简少了maven的配置。3Spring Boot能根据当前类路径下的类、jar包来自动配置bean如添加一个 spring-boot-starter-web启动器就能拥有web的功能无需其他配置。4避免大量的Maven导入和各种版本冲突。Spring Boot的配置文件有哪几种格式.properties 和 .yml它们的区别主要是书写格式不同。Spring Boot Starter有什么用Spring Boot通过提供众多起步依赖Starter降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型定义了对其他库的传递依赖这些东西加在一起即支持某项功能。Spring Boot的启动流程Spring Boot项目创建完成会默认生成一个名为 *Application 的入口类我们是通过该类的main方法启动Spring Boot项目的。在main方法中通过SpringApplication的静态方法即run方法进行SpringApplication类的实例化操作然后再针对实例化对象调用另外一个run方法来完成整个项目的初始化和启动。Spring Boot项目是如何导入包的通过起步依赖Spring Boot Starter导入包。Spring Boot通过提供众多起步依赖Starter降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型定义了对其他库的传递依赖这些东西加在一起即支持某项功能。Spring Boot自动装配的过程使用Spring Boot时我们只需引入对应的StartersSpring Boot启动时便会自动加载相关依赖配置相应的初始化参数以最快捷、简单的形式对第三方软件进行集成这便是Spring Boot的自动配置功能。整个自动装配的过程是Spring Boot通过EnableAutoConfiguration注解开启自动配置加载各种AutoConfiguration类当某个AutoConfiguration类满足其注解Conditional指定的生效条件Starters提供的依赖、配置或Spring容器中是否存在某个Bean等时实例化该AutoConfiguration类中定义的Bean组件等并注入Spring容器就可以完成依赖框架的自动配置。Spring Boot注解SpringBootApplication注解它是Spring Boot项目的核心注解可以看作是Configuration、EnableAutoConfiguration、ComponentScan 注解的集合。EnableAutoConfiguration启用 SpringBoot 的自动配置机制ComponentScan 扫描被Component 、Repository、Service、Controller注解的 bean注解默认会扫描该类所在的包下所有的类。Configuration允许在 Spring 上下文中注册额外的 bean 或导入其他配置类。Component,Repository,Service, Controller声明BeanAutowired自动注入BeanSpringBoot、Spring MVC和Spring有什么区别SpringSpring最重要的特征是依赖注入。Spring MVCSpring MVC提供了一种分离式的方法来开发Web应用。SpringBoot通过一个自动配置和启动的项来解决Spring和Spring MVC需要配置大量的参数的问题。SpringBoot 需要独立的容器运行吗可以不需要内置了Tomcat等容器。spring-boot-starter-parent 有什么用?1继承自spring-boot-dependencies这个里边定义了依赖的版本也正是因为继承了这个依赖所以我们在写依赖时才不需要写版本号。2执行打包操作的配置。3自动化的资源过滤。SpringBoot 打成的jar和普通的jar有什么区别?SpringBoot项目最终打包成的jar是可执行jar 这种jar可以直接通过 java -jar xxx.jar 命令来运行这种jar不可以作为普通的jar被其他项目依赖即使依赖了也无法使用其中的类。SpringBoot实现异常处理使用ControllerAdvice ExceptionHandler 这两个注解的方式统一异常处理这种异常处理方式下会给所有或者指定的Controller织入异常处理的逻辑AOP当 Controller中的方法抛出异常的时候由被ExceptionHandler 注解修饰的方法进行处理。什么是yamlyaml是一种可读的数据序列化语言,它通常用于配置文件。与属性文件相比如果我们想要在配置文件中添加复杂的属性yaml文件就更加结构化而且更少混淆。SpringBoot核心配置文件是什么application.properties谈谈你对MyBatis 的理解 Mybatis内部封装了JDBC开发时只需要关注SQL语句本身不需要花费精力去处理加载驱动、创建连接、创建 Statement 等繁杂的过程。程序员直接编写原生态SQL可以严格控制SQL执行性能灵活度高。MyBatis 可以使用XML或注解来配置和映射原生信息将实体类映射成数据库中的记录避免了手动设置参数以及获取结果集。Dao 接口的工作原理是什么Dao 接口里的方法参数不同时方法能重载吗通常一个Dao接口都会写一个xml映射文件与之对应。Dao接口即Mapper接口接口的全类名就是映射文件中的namespace的值接口的方法名就是映射文件中MappedStatement的id 值接口方法内的参数就是传递给sql的参数。Mapper接口是没有实现类的当调用接口方法时接口全类名方法名拼接字符串作为key值可唯一定位一个MappedStatement。在 MyBatis 中每一个 select 、 insert 、 update 、 delete 标签都会被解析为一个 MappedStatement对象。Dao 接口里的方法可以重载但是Mybatis的xml里面的id不允许重复。#{}和${}的区别是什么#{}是sql的参数占位符MyBatis会将sql中的#{}替换为号在sql 执行前会按序给sql的号占位符设置参数值。本质上是占位符赋值使用$设置参数时MyBatis只是创建普通的SQL语句然后在执行SQL语句时MyBatis将参数直接拼入到SQL里。本质上是字符串拼接。既然$不安全为什么还需要$它可以解决一些特殊情况下的问题。例如在一些动态表格根据不同的条件产生不同的动态列中我们要传递SQL的列名根据某些列进行排序或者传递列名给SQL都是比较常见的场景这就无法使用预编译的方式了。MyBatis的xml文件和Mapper接口是怎么绑定的是通过xml文件中mapper 根标签的namespace属性进行绑定的即namespace属性的值需要配置成接口的全类名MyBatis内部就会通过这个值将这个接口与这个xml关联起来。xml映射文件中除了常见的增删改查标签之外还有哪些标签resultMap 、 parameterMap 、 sql 、 include 、 selectKey 等其中 sql 为sql片段标签通过 include 标签引入sql片段 selectKey为不支持自增的主键生成策略标签。MyBatis 是如何进行分页的分页插件的原理是什么MyBatis使用RowBounds对象进行分页它是针对ResultSet结果集执行的内存分页而非物理分页可以在sql内直接书写带有物理分页的参数来完成物理分页功能也可以使用分页插件来完成物理分页。分页插件的基本原理是使用MyBatis 提供的插件接口实现自定义插件在插件的拦截方法内拦截待执行的 sql然后重写sql再添加对应的物理分页语句和物理分页参数。MyBatis动态sql是做什么的原理是什么MyBatis动态sql可以让我们在xml映射文件内以标签的形式编写动态sql完成逻辑判断和动态拼接sql的功能。执行原理为从sql参数对象中计算表达式的值根据表达式的值动态拼接sql以此来完成动态sql的功能。MyBatis是如何将sql执行结果封装为目标对象并返回的1使用resultMap 标签逐一定义列名和对象属性名之间的映射关系。2使用sql列的别名功能将列别名书写为对象属性名MyBatis 会忽略列名大小写智能找到与之对应对象属性名。MyBatis能执行一对多、多对一的关联查询吗怎么解决。MyBatis可以执行一对一、一对多、多对一多对多的关联查询。解决一对多的查询1使用resultMap自定义一个映射关系2使用resultMap和association实现2分步查询解决多对一的查询1使用resultMap和collection实现2分步查询MyBatis的xml 映射文件中不同的xml文件id是否可以重复不同的xml映射文件如果配置了namespace那么id可以重复如果没有配置namespace那么id不能重复。解决字段名和Bean中的属性名不同的问题1给表的字段名起一个别名为与属性名2使用resultMap自定义一个映射关系。MyBatis缓存机制一级缓存一级缓存存在于SqlSession的生命周期中即它是SqlSession级别的缓存默认会启用。一级缓存默认开启通过同一个SqlSession即可从缓存中获取数据。使一级缓存失效的情况①不同的SqlSession②同一个SqlSession但是查询条件不同③同一个SqlSession两次相同查询之间执行了一次增删改操作④同一个SqlSession两次相同查询之间手动清空了缓存二级缓存二级缓存存在于SqlSessionFactory的生命周期中即它是SqlSessionFactory级别的缓存。二级缓存需要手动打开通过同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存。二级缓存开启的条件①查询的数据所转换的实体类类型必须实现序列化的接口②在映射文件中设置标签cache/③必须在SqlSession关闭或提交以后才有效使二级缓存失效的情况两次相同查询之间执行了一次增删改操作一级缓存和二级缓存都会失效。查询顺序先查询二级缓存再查询一级缓存再查询数据库 JavaEE三层架构Web层①接收客户端的请求②调用Service层处理业务③响应数据给客户端请求转发请求重定向。Service业务层①处理业务②调用DAO持久层访问数据库。Dao持久层只负责跟数据库交互。服务器内部转发和客户端重定向内部转发forward是一次请求-响应的过程服务器内部经过了多少次转发客户端是不知道的地址栏不变。重定向Redirect是两次请求-响应的过程客户端知道url的变化地址栏会变化。保存作用域page保存作用域是该页面范围内有效只在JSP中使用request保存作用域是一次请求响应范围内有效同一客户端的不同请求无法获取保存作用域中的值session保存作用域是一次会话范围内有效同一客户端在一次会话内的多个请求都可以获取到session保存作用域内的值。application保存作用域是一次应用程序范围内有效所有客户端的请求都可以获取到application保存作用域中的值session的工作原理当客户端首次访问服务器时服务器会为其创建一个session对象该对象具有一个唯一标识SESSIONID。并且在响应阶段服务器会创建一个cookie并将SESSIONID存入其中。客户端通过响应的cookie而持有SESSIONID所以当它再次访问服务器时会通过cookie携带这个SESSIONID。服务器获取到SESSIONID后就可以找到与之对应的session对象进而从这个session中获取该客户端的状态。Cookie①Cookie是服务器通知客户端保存键值对的一种技术②客户端有了Cookie后每次请求都把Cookie发送给服务器③每个Cookie的大小不能超过4kbCookie的工作原理浏览器端第一次发送请求到服务器端服务器端创建Cookie该Cookie中包含用户的信息然后将该Cookie发送到浏览器端浏览器端再次访问服务器端时会携带服务器端创建的Cookie服务器端通过Cookie中携带的数据区分不同的用户。Cookie和Session的区别1cookie数据存放在客户端session数据放在服务器上2单个cookie在客户端的限制是不能超过4k而session并没有上限。3cookie只能保存ASCII字符串session中能够存储任何类型的数据。4cookie对客户端是可见的是不安全的session存储在服务器上不存在敏感信息泄露的风险。cookie和session各自适合的场景是什么对于敏感数据应存放在session里因为cookie不安全。对于普通数据优先考虑存放在cookie里这样会减少对服务器资源的占用。jsonjson是一种轻量级的数据交换格式数据交换是指客户端和服务器之间数据的传递格式。json是由键值对组成并且由大括号包围每个键由引号引起来键和值之间使用冒号分隔键值对之间使用逗号分隔。ajaxajax是一种浏览器通过javascript异步发起请求局部更新页面的技术。get请求与post请求有什么区别1GET请求只能进行url编码而POST支持多种编码方式。2GET请求参数会被完整保留在浏览器历史记录里而POST中的参数不会被保留。3GET请求在URL中传送的参数是有长度限制的而POST没有。4GET没有POST安全因为参数直接暴露在URL上所以不能用来传递敏感信息。过滤器和拦截器的区别Filter过滤器主要用于过滤请求对请求的参数、属性进行调整拦截器主要用于拦截对Controller的请求过滤器基于函数回调拦截器基于Java反射机制过滤器依赖Servlet容器拦截器不依赖Servlet容器 过滤器几乎对所有请求起作用过滤器只能在容器初始化时被调用一次拦截器可以多次被调用
http://www.w-s-a.com/news/431366/

相关文章:

  • 从零开始学网站建设知乎安防网站下载
  • 打开网站弹出qq应用软件有哪些
  • 温州网站建设seo网站 如何做 中英文切换
  • 聊城做网站的公司资讯信阳 网站建设
  • 天津市工程建设交易网站查汗国珠海 网页设计
  • 龙果学院大型网站稳定性建设汾阳做网站
  • 湖北 个人网站备案时间域名查询备案查询
  • 网站推广方式校园网站怎么建
  • 长沙seo网站排名怎么在百度发帖
  • 织梦贷款网站模板做印章网站
  • 彭州做网站上海百度网络推广
  • 广州网站搭建快速提升网站排名荧光字网站
  • 15年做那些网站能致富做seo是什么意思
  • 各电商网站的特点网站制作2007
  • 用html做一号店网站怎么做公众号注册平台官网
  • 做盈利网站怎么备案vs做网站如何调试
  • 嘉兴做营销型网站廊坊做网站外包
  • 双语网站模板常州做网站的公司
  • 广州市车管所网站建设全国做网站公司前十名
  • 太原手手工网站建设公司视频直播服务
  • 雷达图 做图网站wordpress首页怎么美化
  • 四川做网站设计公司价格vip解析网站怎么做的
  • 网站建设流程域名申请做化工的 有那些网站
  • 软件开发设计流程图seo搜索引擎官网
  • 外国小孩和大人做网站东富龙科技股份有限公司
  • 上线倒计时单页网站模板做网站的资金来源
  • 泸州市建设厅网站中小企业网络需求分析
  • asp网站版权做网页价格
  • 长春网站建设路关键词优化公司哪家好
  • 河南省建设银行网站年报天津设计师网站