发表时间:2022-03-25来源:网络
(1)jsp本质上就是一个Servlet,它是Servlet的一种特殊形式(由SUN公司推出),每一个jsp页面都是一个servlet实例。html
(2)Servlet 是由Java提供用于开发web服务器应用程序的一个组件,运行在服务端,由servlet容器管理,用来生成动态内容。一个servlet 实例是实现了特殊接口Servlet的Java类,全部自定义的servlet均必须实现Servlet接口。前端
区别:
1) jsp是html页面中内嵌的Java代码,侧重页面显示。
2) Servlet 是html代码和Java代码分离,侧重逻辑控制,mvc 设计思想中jsp位于视图层,servlet 位于控制层。
3) Jsp运行机制:以下图
java
4)JVM只能识别Java类,不能识别jsp代码。web容器收到以.jsp为扩展名的url请求时,会将访问请求交给tomcat 中jsp引擎处理,每一个jsp页面第一次被访问时,jsp引擎将jsp代码解释为一个servlet源程序,接着编译servlet 源程序生成.class文件,再有web容器servlet 引擎去装载执行servlet程序,实现页面的交互。web
Servlet加载一>实例化一>服务一>销毁。spring
2.1生命周期详解:编程
(1)init():
在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。能够配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。不管有多少客户机访问Servlet,都不会重复执行init()。后端
(2)service():
它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,并且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象做为参数。
在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。设计模式
(3)destroy():
仅执行一次,在服务器端中止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。
一个Servlet 在运行service()方法时可能会产生其余的线程,所以须要确认在调用destroy()方法时,这些线程已经终止或完成。tomcat
2.2 如何与Tomcat 结合工做步骤:安全
(1)Web Client 向Servlet容器(Tomcat)发出Http请求。
(2)Servlet容器接收Web Client的请求。
(3)Servlet容器建立一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
(4)Servlet容器建立一个HttpResponse对象。
(5)Servlet 容器调用HttpServlet对象的service 方法,把HttpRequest 对象与HttpResponse对象做为参数传给HttpServlet对象。
(6)HttpServlet 调用HttpRequest对象的有关方法,获取Http请求信息。
(7)HttpServlet 调用HttpResponse对象的有关方法,生成响应数据。
2.3 servlet 特性
(1)单例多线程
(2)servlet是单实例的
2.4 servlet线程安全问题
(1)是否安全?
Servlet对象并非一个线程安全的对象。
Servlet 第一次被调用的时候,init()方法会被调用,而后调用service()方法,从第二次被请求开始,就直接调用service()方法。
(2)为何不安全?
由于servlet是单实例的,因此后面再次请求同一个Servlet的时候都不会建立 Servlet实例,并且web容器会针对每一个请求建立一个独立的线程,这样多个并发请求会致使多个线程同时调用service()方法,这样就会存在线程不安全的问题。
(3)如何解决不安全问题?
1)不要在servlet中使用成员变量。
2)能够给servlet中的方法添加同步锁,Synchronized,可是不提倡,数据并发访问会形成阻塞等待。
3)能够实现SingleThreadModel接口,以下。这样能够避免使用成员变量的问题,但不提倡,缘由同上。
(1)用户发送请求至前端控制器DispatcherServlet。
(2)DispatcherServlet 收到请求调用HandlerMapping处理器映射器。
(3)HandlerMapping处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(假若有就生成)一并返回给DispatcherServlet。
(4)DispatcherServlet 调用HandlerAdapter处理器适配器。
(5)HandlerAdapter通过适配调用具体的处理器(Controller,也叫后端控制器)。
(6)Controller执行完成返回ModelAndView.
(7)HandlerAdapter将controller 执行结果ModelAndView返回给 DispatcherServlet。
(8)DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。
(9)ViewReslover解析后返回具体View。
(10)DispatcherServlet 根据 View进行渲染视图(即将模型数据填充至视图中)。
(11)DispatcherServlet响应用户。
MyBatis 传递单个参数,若是是普通类型(String+8个基本)的,取值时在#{}得中能够任意指定,若是是对象类型的,则在#{}得中使用对象的属性名来取值。
MyBatis传递多个参数,默认状况下,MyBatis会对多个参数进行封装Map,取值时在#{}可使用0,1,2…或者是param1,param2。
MyBatis传递多个参数,建议使用命名参数,在Mapper接口的方法的形参前面使用。
@Param( )来指定封装Map时用的key.取值时在#}中使用@Param指定的key。
在标签中使用useGeneratedkeys和keyProperty两个属性来获取自动生成的主键值。
示例:
动态SQL是MyBatis的强大特性之一基于功能强大的OGNL表达式。
动态SQL主要是来解决查询条件不肯定的状况,在程序运行期间,根据提交的条件动态的完成查询经常使用的标签:
(1)用户向服务器发送请求,请求被springMVC前端控制器DispatchServlet 捕获。
(2)DispatcherServle对请求URI进行解析,获得请求资源标识符(URL),而后根据该URL调用HandlerMapping将请求映射处处理HandlerExcutionChain。
(3)DispatchServlet 根据得到的Handler选择一个合适的HandlerAdapter适配器处理。
(4)Handler对数据处理完成之后将返回一个ModelAndView()对象给DisPatchServlet。
(5)Handler返回的ModelAndView()只是一个逻辑视图并非一个正式的视图,DispatcherSevlet经过ViewResolver 试图解析器将逻辑视图转化为真正的视图View。
(6)DispatcherServle经过model解析出ModelAndView()中的参数进行解析最终展示出完整的view并返回给客户端。

Spring 是一个开源框架,为简化企业级应用开发而生。Spring能够是使简单的JavaBean实现之前只有EJB才能实现的功能。Spring是一个IOC和AOP容器框架。
Spring容器的主要核心是:
(1)控制反转(IOC)
传统的java开发模式中,当须要一个对象时,咱们会本身使用new或者getlnstance等直接或者间接调用构造方法建立一个对象。而在spring开发模式中,spring容器使用了工厂模式为咱们建立了所须要的对象,不须要咱们本身建立了,直接调用spring提供的对象就能够了,这是控制反转的思想。
(2)依赖注入(DI)
spring使用javaBean 对象的set 方法或者带参数的构造方法为咱们在建立所需对象时将其属性自动设置所须要的值的过程,就是依赖注入的思想。
(3)面向切面编程(AOP)
在面向对象编程(oop)思想中,咱们将事物纵向抽成一个个的对象。而在面向切面编程中,咱们将一个个的对象某些相似的方面横向抽成一个切面,对这个切面进行一些如权限控制、事物管理,记录日志等公用操做处理的过程就是面向切面编程的思想。AOP底层是动态代理,若是是接口采用JDK动态代理,若是是类采用CGLIB方式实现动态代理。
(1)代理模式
spring中两种代理方式,若目标对象实现了若干接口,spring 使用jdk的java.lang.reflect.Proxy类代理。若目标兑现没有实现任何接口,spring使用CGLIB库生成目标类的子类。
(2)单例模式
在spring的配置文件中设置bean默认为单例模式。
(3)模板方式模式
用来解决代码重复的问题。好比:RestTemplate、JmsTemplate、JpaTemplate。
(4)工厂模式 在工厂模式中,咱们在建立对象时不会对客户端暴露建立逻辑,而且是经过使用同一个接口来指向新建立的对象。Spring中使用beanFactory来建立对象的实例。
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14