精华内容
下载资源
问答
  • 内容全面,记录了每个细节的知识点
  • Web编程技术》学习笔记(一)

    千次阅读 2019-03-21 20:18:20
    第一章 引论 一、WEB编程基础知识 ...二、WEB编程主流技术 Web是典型的分布式应用结构,每一次信息交换都涉及客户端和服务器端: B/S架构逐渐取代C/S架构。 1、Web客户端技术 主要任务:展现信息内容 HTML语言:...

    第一章 引论
    一、WEB编程基础知识

    • 统一资源定位符(URL)(互联网的一个协议要素,定义任何远程或本地的可用资源)
      其通用格式为:协议:[//][[用户名[:密码]@]主机名[:端口号]][/资源路径]

    二、WEB编程主流技术
    Web是典型的分布式应用结构,每一次信息交换都涉及客户端和服务器端:

    B/S架构逐渐取代C/S架构。

    1、Web客户端技术

    主要任务:展现信息内容

    • HTML语言:构成web页面的主要工具。
    • Java Applets:java小应用程序,提供多媒体服务,可从服务器下载至浏览器中使用。
    • 脚本程序:嵌入在HTML文档中的程序,可创建动态页面,大大提高交互性。
      • JavaScript:易于使用、变量类型灵活、无需编译等
        
      • VBScript:设计交互的Web页面
        
    • CSS级联样式表:信息展示格式。

    2、Web服务端技术

    主要任务:处理客户端请求并返回结果

    • CGI:通用网关接口。可用不同程序编写CGI程序,将其放到web服务器中,建立web页面和脚本程序之间的联系,利用脚本程序进行处理并返回结果。效率低(每次修改都要重新将CGI程序编译成可执行文件)

    • PHP:嵌入在HTML并由服务器解释的脚本语言。对客户端没有要求,可直接运行各个系统平台上。管理动态内容、支持数据库、处理会话跟踪,构建整个电子商务站点。

    • ASP:活动服务器页面。可用脚本语言进行编写,编写较为灵活,在HTML页面中插入脚本即可。ASP.NET企业级网络计算的web平台是ASP的升级版。

    • JSP:java服务器界面。在HTML中插入java程序片段和JSP标记所形成的文档(后缀为.jsp)。提供强有力的组件:JavaBeans、Java Servlet等。开放性、跨平台(JSP字节码是标准的,与平台无关,具有不同平台的可移植性)

      • 将内容的生成和显示进行分离
      • 强调可重用性组件
      • 采用标识简化页面开发
      • 健壮性和安全性
      • 良好的移植性
      • 企业级的扩展性和性能

    三、web应用的运行环境(JSP)

    1、安装JDK(JSP必须使用jdk工具包)
    2、安装WEB服务器(tomcat服务器)
    3、配置环境变量
    (转)java环境详细安装步骤
    (转)tomacat详细安装与环境配置步骤
    (转)tomacat在eclipse配置步骤

    4、在这里插入图片描述
    注意:
    \common目录下的文件可以被Tomcat服务器系统程序和所有JSP页面程序访问。
    \server目录下的文件只能被Tomcat服务器系统程序访问。
    \shared目录下的文件只能被JSP页面程序访问。

    • Tomcat服务器的默认web服务目录是:\Tomcat6\webapps\ROOT。
      通常将JSP页面文件(比如:example.jsp)保存在该目录下。

    在这里插入图片描述

    展开全文
  • Web 编程基础Web应用程序会让Web服务器给客户机发送HTML代码ASP.NET技术可用于动态创建带有服务器端代码的Web页面 ASP.NET 运行库使用ASP.NET在客户系统上创建Web应用程序,只需要浏览器不需要安装.NET在服务器系统...

    Web 编程基础

    Web应用程序会让Web服务器给客户机发送HTML代码
    ASP.NET技术可用于动态创建带有服务器端代码的Web页面

     

    ASP.NET 运行库

    使用ASP.NET在客户系统上创建Web应用程序,只需要浏览器不需要安装.NET
    在服务器系统上,需要ASP.NET运行库

     

    创建简单的Web页面

    下面是一些主要Web服务器控件,以及返回的HTML代码

    服务器控件 HTML
    Label  <span>
    Literal  static text
    TextBox  <input type="text">
    Button  <input type= "submit">
    LinkButton <a href="javascript: __dopostback()>
    ImageButton <input type="image">
    HyperLink <a>
    DropDownList <select>
    ListBox  <select size="">
    CheckBox <input type= "checkbox">
    RadioButton <input type="radio">
    Image  <img src="">
    Calendar <table>
    TreeView <div><table>

     

    事件处理程序

    可以添加事件处理程序,在服务器上给Web服务器控件调用
    例如Button控件可以包含Click事件

    只有进行回送时,才在服务器上触发事件

    用控件的新值来验证其旧值是由ViewState完成的
    ViewState是一个隐藏字段,会同页面内容一起发送给浏览器
    页面发送给客户端时,ViewState包含与窗体中控件相同的值
    给服务器回送时,ViewState会和新值一起发送给服务器,用来验证值是否改变和其他处理

    Button控件属性PostbackUrl,定义了从当前页发送到的网页的URL
    例如:
    <asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/1.aspx" />

    目标页的Page类的属性PreviousPage,会返回一个Page对象
    使用PreviousPage的FindControl()方法来访问源页面的控件
    例如:
    Label1.Text = ((TextBox)PreviousPage.FindControl("TextBox1")).Text;
    由于FindControl()方法返回的是一个Control对象,所以要强制转换

     

    输入的有效性验证

    使用ASP.NET的验证控件,能进行客户端和服务器检查

    所有验证控件:
    RequiredFieldValidator
    计算输入控件的值以确保用户输入值
    当验证执行时,如果输入控件包含的值仍为初始值而未更改,则该输入控件验证失败
    默认情况下,初始值为空字符串 (""),这指示必须在输入控件中输入值方可通过验证

    RangeValidator
    计算输入控件的值,以确定该值是否在指定的上限与下限之间
    可以检查数字对、字母对和日期对限定的范围

    RegularExpressionValidator
    计算输入控件的值,以确定该值是否与某个正则表达式所定义的模式相匹配
    通过这种类型的验证,可以检查可预知的字符序列,如电子邮件地址

    CompareValidator
    将输入控件的值同常数值或其他输入控件的值相比较,以确定这两个值是否与由比较运算符(小于、等于、大于等等)指定的关系相匹配

    CustomValidator
    计算输入控件的值以确定它是否通过自定义的验证逻辑
    可以创建服务器端验证函数,请为执行验证事件提供处理程序

    ValidationSummary
    显示 Web 页上所有验证错误的列表

     

    状态管理

    有几种方式可以把一些客户端信息从一个页面传送给另一个页面
    它们主要区别是:状态是存储在客户端还是服务器上

    状态类型 存储  说明
    ViewState 客户端  只在一个页面中
    Cookie  客户端
    Session  服务器  会话状态
    Application 服务器  应用程序状态在所有客户端上共享
    Cache  服务器  高速缓存


    客户端的状态管理

    ViewState

    服务器通过ViewState来判断初始值和新值是否有区别,来判断值是否有修改
    缺点是这样增加了网络流量
    可以在Page指令中把EnableViewState属性设置为false来关闭它

    可以通过设置控件的EnableViewState属性来配置控件的ViewState值
    而且控件的EnableViewState配置优先级高于页面的配置

    可以使用索引符自定义一个ViewState值
    例如:
    定义一个ViewState值:
    ViewState["mydata"] = "my data";
    读取存储的ViewState值:
    string mydata = (string)ViewState["mydata"];

    在发送给客户端的HTML代码中,ViewState储存在一个隐藏的字段中
    ViewState只能保存到一个页面中

    cookie

    cookie在HTTP头中定义,使用HttpResponse类可以把cookie发送给客户端
    Response是Page类的一个属性,返回一个HttpResponse类型的对象
    HttpResponse类定义了返回HttpCookieCollection的Cookies属性
    使用HttpCookieCollection可以给客户端返回多个cookie

    例如:
    HttpCookie cookie = new HttpCookie("mycookie");
    cookie.Values.Add("mystate", "myval");
    cookie.Expires = DateTime.Now.AddMonths(3);
    Response.Cookies.Add(cookie);

    说明:
    创建并命名新的Cookie
    向Cookie添加键值
    通过Expires属性获取或设置Cookie的过期日期和时间
    使用Response发送这个Cookie

    通过访问HttpRequest对象中的cookie集合读取cookie
    例如:
    HttpCookie cookie = Request.Cookies["mycookie"];
    string myval = cookie.Values["mystate"];


    服务器端的状态管理

    使用客户端状态的缺点是增加了数据在网络之间的传送
    使用服务器状态的缺点是服务器必须给其客户端分配资源

    Session

    可以在Global Application类中定义在会话开始或结束时运行的代码
    在新的Global Application类中会创建global.asax文件
    在Session_Start()事件处理程序中,可以初始化会话变量
    例如:
    void Session_Start(Object sender, EventArgs e) {
        // Code that runs on application startup
        Session["mydata"] = 0;
    }

    Session可以存储在HttpSessionState对象中
    使用Page类的Session属性来访问和设置
    例如:
    int val = (int)Session["mydata"];
    val += 4;
    Session["mydata"] = val;

    Application

    使用应用程序状态可以使数据在多个客户端共享
    通过Page类的Application属性访问它
    可以在global.asax文件的Application_Start()事件处理中初始化Application变量
    例如:
    void Application_Start(Object sender, EventArgs e) {
        // Code that runs on application startup
        Application["userCount"] = 0;
    }

    在改变Application变量之前,由于多个用户可以同时访问,必须用Lock()方法锁定
    在修改变量之后必须用Unlock()方法,而且锁定和解锁之间要非常短
    例如:
    void Session_Start(Object sender, EventArgs e)
    {
        // Code that runs when a new session is started
        Application.Lock();
        Application["userCount"] = (int)Application["userCount"] + 1;
        Application.UnLock();
    }

    读取Application中的数据:
    Label1.Text = Application["userCount"].ToString();

    不应该在Application中储存太多数据

    Cache

    高速缓存(Cache)是服务器端状态,在所有客户端上共享
    不同于Application,Cache有多种方式定义状态何时失效

    例如:
    给Cache添加对象:
    Cache.Add("mycache", myobj, null, DateTime.MaxValue, TimeSpan.FromMinutes(10), CacheItemPriority.Normal, null);

    参数:
    key 用于引用该项的缓存键

    value 要添加到缓存的项

    dependencies 该项的文件依赖项或缓存键依赖项
    当任何依赖项更改时,该对象从缓存中移除。如果没有依赖项,则此参数包含空引用

    absoluteExpiration 所添加对象将过期并被从缓存中移除的时间
    如果使用可调过期,则 absoluteExpiration 参数必须为 NoAbsoluteExpiration。

    slidingExpiration 最后一次访问所添加对象时与该对象过期时之间的时间间隔
    如果该值等效于20分钟,则对象在最后一次被访问20分钟之后将过期并从缓存中移除。
    如果使用绝对过期,则 slidingExpiration 参数必须为 NoSlidingExpiration。

    priority 定义了高速缓存的优先级,由 CacheItemPriority 枚举表示
    在删除高速缓存项时,优先级较低的项先删除

    onRemoveCallback 在从缓存中移除对象时所调用的委托
    当从缓存中删除应用程序的对象时,可使用它来通知应用程序。

    返回值
    如果该项先前存储在Cache中,则为Object,否则为null

    当返回的对象不是null时,就可以进行类型转换,并用于储存高速缓存项
    例如:
    object o = Cache["mycache"];
    if (o == null)
    {
        // Reload the cache.
    }
    else
    {
        // Use the cache.
        MyClass myObj = (MyClass)o;
        //...
    }

     

    身份验证和授权

    对于Web应用程序,最常用的身份验证技术是Forms身份验证
    安全控件 --> Membership API --> 成员提供程序


    身份验证的配置


    使用安全控件

    安全控件  说明
    Login   复合控件,创建使用户登录网站的界面
    LoginStatus  根据用户是否登录,并切换某个链接的状态
    LoginName  在网页上显示经过身份验证的用户的名称
    LoginView  根据指定用户的身份验证状态使用模板显示不同的内容
    PasswordRecovery 复合控件,创建使用户重新设置密码的界面
    ChangePassword  复合控件,创建使用户可以更改其网站密码的界面
    CreateUserWizard 一个向导,创建新用户,把信息写入

    使用Login控件

    添加一个Login控件,可以看到源码是:
    <asp:Login ID="Login1" runat="server"></asp:Login>
    可以使用DisplayRememberMe属性来设置是否显示复选框使用户可以控制是否发送Cookie
    为了可以编辑样式,可以选择智能标记选择“转换为模板”来编辑

    使用CreateUserWizard控件

    CreateUserWizard控件是一个向导,其步骤可以在设计器中配置
    控件的智能标记可以分别配置每个步骤

     

    读写SQL Server数据库

    在服务器资源管理器中,可以添加数据库连接或者添加新的数据库


    显示数据

    利用数据控件可以显示、编辑数据
    数据控件包括:数据视图和数据源控件
    数据源控件与数据源关联在一起,数据视图与数据源连接来表示数据

    数据控件 说明
    GridView 用行和列来显示数据
    DataList 在一列显示所有的项
    DetailsView 用于显示单个记录,一行表示一个字段,通常与GridView组合使用
    FormView 显示数据源中的一行
    Repeater 为数据源中的每个项重复相应布局

    数据源控件  说明
    SqlDataSource  访问位于关系数据库中的数据
    AccessDataSource 表示一个使用Access数据库的数据源控件
    ObjectDataSource 允许把.NET类用作数据源
    XmlDataSource  控件使得XML数据可用于数据绑定控件
    SiteMapDataSource 使用XML文件定义站点结构,创建到该网站的链接和引用 

    展开全文
  • 笔记-小马哥 Spring编程思想笔记

    千次阅读 2020-06-01 17:58:36
    小马哥 Spring编程思想笔记 文章目录小马哥 Spring编程思想笔记Spring Framework1. 课前准备2. Spring 特性总览3. Spring 版本特性4. Spring 模块化设计5. Spring 对Java语言特性运用6. Spring 对JDK API 实践7. ...

    小马哥 Spring编程思想笔记

    Spring Framework

    1. 课前准备

    2. Spring 特性总览

    1. 核心特性
      1. IOC 容器(IoC Container)
      2. Spring 事件(Events)
      3. 资源管理(Resources)
      4. 国际化(i18n)
      5. 校验(Validation)
      6. 数据绑定(Data Binding)
      7. 类型转换(Type Conversion)
      8. Spring 表达式(Spring Express Language)
      9. 面向切面编程(AOP)
    2. 数据存储(Data Access)
      1. JDBC
      2. 事务抽象(Transactions)
      3. DAO支持(DAO Support)
      4. O/R映射 (O/R Mapping)
      5. XML 编列(XML Marshalling)
    3. Web 技术
      1. Web Servlet 技术栈
        1. Spring MVC
        2. WebSocket
        3. SockJS
      2. Web Reactive 技术栈
        1. Spring WebFlux
        2. WebClient
        3. WebSocket
    4. 技术整合(Integration)
      1. 远程调用(Remoting)
      2. Java消息服务(JMS)
      3. Java连接架构(JCA)
      4. Java管理扩展(JMX)
      5. Java邮件客户端(Email)
      6. 本地任务(Tasks)
      7. 本地调度(Scheduling)
      8. 缓存抽象(Caching)
      9. Spring测试(Testing)
    5. 测试(Testing)
      1. 模拟对象(Mock Objects)
      2. TestContext 框架(TestContext Framework)
      3. Spring MVC 测试(Spring MVC Test)
      4. Web 测试客户端 (WebTestClient)

    3. Spring 版本特性

    Spring Framework版本Java标准版Java企业版
    1.x1.3+J2EE 1.3+
    2.x1.4.2+J2EE 1.3+
    3.x5+J2EE1.4 和 Java EE 5
    4.x6+Java EE6 和7
    5.x8+Java EE7

    4. Spring 模块化设计

    1. spring-aop
    2. spring-aspects
    3. spring-context-indexer
    4. spring-context-support
    5. spring-context
    6. spring-core
    7. spring-expression
    8. spring-instrument
    9. spring-jcl
    10. spring-jdbc
    11. spring-jms
    12. spring-messaging
    13. spring-orm
    14. spring-oxm
    15. spring-test
    16. spring-tx
    17. spring-web
    18. spring-webflux
    19. spring-webmvc
    20. spring-websocket

    5. Spring 对Java语言特性运用

    1. Java 5语法特性

      语法特性Spring支持版本代表实现
      注解(Annotation)1.2+@Transactional
      枚举(Enumeration)1.2+Propagation
      for-each 语法3.0+AbstractApplicationContext
      自动装箱(AutoBoxing)3.0+
      泛型(Generic)3.0+ApplicationListener
    2. Java 6 语法特性

      语法特性Spring 支持版本代表实现
      接口 @Override4.0+
    3. Java 7语法特性

      语法特性Spring 支持版本代表实现
      Diamond语法5.0+DefaultListableBeanFactory
      try-with-resources 语法5.0+ResourceBundleMessageSource
    4. Java 8语法特性

      语法特性Spring 支持版本代表实现
      Lambda语法5.0+PropertyEditorRegistrySupport

    6. Spring 对JDK API 实践

    1. 小于(<) Java 5 API

      API类型Spring 支持版本代表实现
      反射(Reflection)1.0+MethodMatcher
      Java Beans1.0+CachedIntrospectionResults
      动态代理(Dynamic Proxy)1.0+JdkDynamicAopProxy
    2. Java 5 API

    API类型Spring 支持版本代表实现
    XML处理(DOM,SAX…)1.0+XmlBeanDefinitionReader
    Java管理扩展(JMX)1.2+@ManagedResource
    Instrumentation2.0+InstrumentationSavingAgent
    并发框架(J.C.U)3.0+TreadPoolTaskScheduler
    格式化(Formatter)3.0+DateFormatter
    1. Java 6 API

      API类型Spring 支持版本代表实现
      JDBC4.0(JSR221)1.0+jdbcTemplate
      Common Annotations(JSR 250)2.5+CommonAnnotationBeanPostProcessor
      JAXB2.0(JSR222)3.0+Jaxb2Marshaller
      Scripting in JVM(JSR269)4.2+StandardScriptFactory
      可插拔注解处理API(JSR269)5.0+@Indexed
      Java Compiler API(JSR199)5.0+TestCompiler(单元测试)
    2. Java 7 API

      API类型Spring 支持版本代表实现
      Fork/Join框架(JSR166)3.1+ForkJoinPoolFactoryBean
      NIO2(JSR203)4.0+PathResource
    3. Java 8 API

      API类型Spring 支持版本代表实现
      Date and Time API(JSR310)4.0+DateTimeContext
      可重复Annotations(JSR337)4.0+@PropertySources
      Stream API(JSR335)4.2+StreamConverter
      ConpletableFuture(J.U.C)4.2+CompletableToListenableFutureAdapter

    7. Spring 对 Java EE API 整合

    1. Java EE Web技术相关

      JSR规范Spring 支持版本代表实现
      Servlet+JSP(JSR035)1.0+DispatcherServlet
      JSTL(JSR052)1.0+JstlView
      JavaServer Faces(JSR127)1.1+FacesContextUtils
      PortLet(JSR168)2.0-4.2DispatcherPortlet
      SOPA(JSR067)2.5+SoapFaultException
      WebServices(JSR109)2.5+CommonAnnotationBeanPostProcessor
      Websocket(JSR356)4.0+WebSocketHandler
    2. Java EE 数据存储相关

      JSR规范Spring 支持版本代表实现
      JDO(JSR12)1.0-4.2JdoTemplate
      JTA(JSR907)1.0+JtaTransactionManager
      JPA(EJB3.0 JSR220的成员)2.0+JpaTransactionManager
      Java Caching API(JSR107)3.2+JCacheCache
    3. Java EE Bean技术相关

      JSR规范Spring 支持版本代表实现
      JMS(JSR914)1.1+JmsTemplate
      EJB2.0(JSR19)1.0+AbstractStatefulSessionBean
      Dependency Injection for Java(JSR 330)2.5+AutowiredAnnotationBeanPostProcessor
      Bean Validation(JSR303)3.0+LocalValidatorFactoryBean
    4. 资源相关

      1. JSR官方网址: https://jcp.org
      2. 小马哥JSP收藏: https://github.com/mercyblitz/jsr
      3. Spring官方文档根路径: https://docs.spring.io/spring/docs/

    8. Spring 编程模型

    1. 面向对象编程
      1. 契约接口: Aware、BeanPostProcessor…
      2. 设计模式: 观察者模式、组合模式、模板模式…
      3. 对象继承: Abstract*类
    2. 面向切面编程
      1. 动态代理: JdkDynamicAopProxy
      2. 字节码提升: ASM、CGLib、AspectJ…
    3. 面向元编程
      1. 注解: 模式注解(@Component、@Service、@Respository)
      2. 配置: Environment抽象、PropertySources、BeanDefinition…
      3. 泛型: GenericTypeResolver、ResolvableType…
    4. 函数驱动
      1. 函数接口: ApplicationEventPublisher
      2. Reactive: Spring WebFlux
    5. 模块驱动
      1. Maven Artifaces
      2. OSGI Bundles
      3. Java 9 Automatic Modules
      4. Spring @Enable*

    9. Spring 核心价值

    1. 生态系统
      1. Spring Boot
      2. Spring cloud
      3. Spring Security
      4. Spring Data
      5. 其他
    2. API抽象设计
      1. AOP抽象
      2. 事务抽象
      3. Environment抽象
      4. 生命周期
    3. 编程模型
      1. 面向对象编程
      2. 面向切面编程
      3. 面向元编程
      4. 面向模块编程
      5. 面向函数编程
    4. 设计思想
      1. OOP(Object-Oriented Programming)
      2. IoC/DI
      3. DDD(Domain-Driven Development)
      4. TDD(Test-Driven Development)
      5. EDP(Event-Driven Programing)
      6. FP(Functional Programing)
    5. 设计模式
      1. 专属模式
        1. 前缀模式
          1. Enable模式
          2. Configurable模式
        2. 后缀模式
          1. 处理器模式
            1. Processor
            2. Resolver
            3. Handler
          2. 意识模式
            1. Aware
          3. 配置器模式
            1. Configuror
          4. 选择器模式
            1. org.springframework.context.annotation.ImportSelector
      2. 传统GoF23
        1. 创建模式
          1. 抽象工厂(Abstract Factory)
          2. 构造器(Builder)
          3. 工厂方法(Factory Method)
          4. 原型(Prototype)
          5. 单体(Singleton)
        2. 结构模式
          1. 适配器(Adapter)
          2. 桥连(Bridge)
          3. 组合(Composite)
          4. 装饰器(Decorator)
          5. 门面(Facade)
          6. 轻量级(Flyweight)
          7. 代理(Proxy)
        3. 行为模式
          1. 责任链(Chain of responsibility)
          2. 命令(Command)
          3. 拦截器(Interpreter)
          4. 迭代器(Iterator)
          5. 调解者(Mediator)
          6. 备忘(Memento)
          7. 观察者(Observer)
          8. 状态(State)
          9. 策略(Strategy)
          10. 模板方法(Template Method)
    6. 用户基础
      1. Spring用户
        1. Spring Framework
        2. Spring Boot
        3. Spring Cloud
      2. 传统用户
        1. Java SE
        2. Java EE

    10. 面试题精选

    1. 什么是 Spring Framework?

      Spring makes it easy to create Java enterprise applications. It provides everything you need to embrace the Java language in an enterprise environment, with support for Groovy and Kotlin as alternative languages on the JVM, and with the flexibility to create many kinds of architectures depending on an applications’s needs.

      Spring使创建Java企业应用程序变得容易。它提供了在企业环境中使用Java语言所需的一切,支持将Groovy和Kotlin作为JVM上的替代语言,并具有根据应用程序的需要创建多种体系结构的灵活性。

    2. Spring Framework 有哪些核心模块?

      spring-core: Spring基础API模块,如资源管理,泛型处理

      spring-beans: Spring Bean相关,如依赖查找,依赖注入

      spring-aop: Spring AOP处理,如动态代理,AOP字节码提升

      spring-context: 时间 驱动,注解驱动,模块驱动

      spring-expression: Spring表达式语言模块

    3. Spring Framework的优势和不足是什么?

      ???

    11. 重新认识IoC

    1. IoC发展简介

    2. IoC主要实现策略

    3. IoC容器的职责

      1. 通用职责
      2. 依赖处理
        1. 依赖查找
        2. 依赖注入
      3. 生命周期管理
        1. 容器
        2. 托管的资源(Java Beans或其他资源)
      4. 配置
        1. 容器
        2. 外部化配置
        3. 托管的资源(Java Beans或其他资源)
    4. IoC容器的实现

      1. Java SE
        1. Java Beans
        2. Java ServiceLoader SPI
        3. JNDI(Java Naming and Directory Interface)
      2. Java EE
        1. EJB(Enterprise Java Beans)
        2. Servlet
      3. 开源
        1. Apache Avalon
        2. PicoContainer
        3. Google Guice
        4. Spring Framework
    5. 传统IoC容器实现

      1. 特性
        1. 依赖查找
        2. 生命周期管理
        3. 配置元信息
        4. 事件
        5. 自定义
        6. 资源管理
        7. 持久化
      2. 规范
        1. JavaBeans
        2. BeanContext
    6. 轻量级IoC容器

    7. 依赖查找VS依赖注入

      优劣对比

      类型依赖处理实现便利性代码侵入性API依赖性可读性
      依赖查找主动获取相对繁琐侵入业务逻辑依赖容器API良好
      依赖注入被动提供相对便利低侵入性不依赖容器API一般
    8. 构造器注入VS Setter注入

    9. 面试题精选

      1. 什么是IoC?

        简单的说 IoC是反转控制,类似于好莱坞原则,主要有依赖查找和依赖注入实现

      2. 依赖查找和依赖注入的区别

        依赖查找是主动或手动的依赖查找方式,通常需要依赖容器或标准API实现.而依赖注入则是手动或者自动依赖绑定的方式,无需依赖特定的容器和API

      3. Spring作为IoC容器有什么优势

        典型的IoC管理,依赖查找和依赖注入

        AOP抽象

        事务抽象

        事件机制

        SPI扩展

        强大的第三方整合

        易测试性

        更好的面向对象

    AOP

    OOP与AOP区别

    1. 与OOP对比,传统的OOP开发中的代码逻辑是自上而下,在这些自上而下的过程会产生写横切性的问题,而这些横切性的问题又与我们主业务逻辑关系不大,会散落在代码的各个地方,造成难以维护.
    2. AOP的编程思想就是把这些横切性的问题和主业务逻辑进行分离,从而起到解耦的目的.

    底层实现原理

    AOP 具体用以下哪种代理 取决于条件
    (具体条件查看源码org.springframework.aop.framework.DefaultAopProxyFactory#createAopProxy)
    Java动态代理
    CGLIB

    展开全文
  • 接下来讲前情回顾、编程语言、技术规范、组件化、前后端分离、性能。 不会按照书本上的内容照抄,不然好没意思,除非非常必要,一般用自己的理解解释。 不过这本书好多东西我都想写上来,书上的内容就是我想要了解的...
  • Web前端学习笔记

    千次阅读 2020-06-30 10:58:49
    web前端的定义:是面向用户(浏览者)的互联网技术统称。主要包括Web界面的结构、Web界面的外观视觉表现以及Web界面的交互实现。 Web前端的分类:前端设计和前端架构。 HTML结构语言:超文本标记语言。 通过各种标记...
  • 2020年适合程序员编程的笔记本电脑推荐

    万次阅读 多人点赞 2020-06-01 21:39:24
    在购买编程笔记本电脑时,一套智能的基准规格包括至少 8GB 的内存、像样的 SSD、强大的集成 GPU 和一个 i5 或 i7 处理器。虽然这些基准配置很好,但它们不足以帮助您找到最好的笔记本电脑。在这篇文章中,我研究和...
  • 《JAVA Web技术及应用》读书笔记

    千次阅读 2018-08-29 15:30:00
    第一章 JAVA Web 入门 1.1 Web应用概述 Web应用是一种通过互联网访问的应用程序,使用网页语言编写,通过浏览器运行的动静态网站。 动态网站
  • 书 名: JSP网络编程学习 封面 笔记 作 者:傅进勇 李波 出版社: 电子工业出版社 出版时间: 2008 全书内容分为7篇,共23章,第一篇为“JSP应用开发基础”,主要讲述JSP技术背景情况、JSP技术的基本原理及开发...
  • Web前端学习笔记学习路线图

    千次阅读 多人点赞 2019-02-20 17:46:03
    web前端开发的知识点繁多,所以,要想真正全部掌握web前端工程师开发技能,并非一件易事,而且,网上的视频,不系统,知识前后不连贯,所以想真正的掌握web前端开发技术,灵活的运用到企业项目,还需要你能真正的...
  • 一、深入web请求过程 1.B/S网络架构,服务端基于同一的http。 在浏览器输入taobao.com会发生:dns解析ip——>根据ip寻找服务器(负载均衡选择服务器)--->查找数据(分布式缓存、静态文件、数据库)-->...
  • web前端学习笔记(一)

    万次阅读 多人点赞 2018-07-29 09:50:39
    web前端的定义:是面向用户(浏览者)的互联网技术统称。主要包括Web界面的结构、Web界面的外观视觉表现以及Web界面的交互实现。 Web前端的分类:前端设计和前端架构。 HTML结构语言:超文本标记语言。 通过...
  • 之前的实习--关于Web部分的笔记

    千次阅读 2016-06-03 22:17:55
    之前实习的时候做的是关于Web的,主要做的是CRM这类企业项目,比较传统,技术用的也比较传统,是典型的SSH架构,如今不再从事Web开发,但是之前实习的一些笔记进行简单记录下,希望以后能够用的着。1、poi POI提供...
  • 并配以大量的实例,和精选的代码,细致讲解JAVA-WEB动态网页编程的方法与技巧。是广大IT学子踏入WEB开发的良师益友。 [版权声明] 本套资料版权归属于IT电子教育门户和李兴华老师所有,任何机构或个人不得擅自将其...
  • 2)安全漏洞的代码审计和代码加固技术:缓冲区溢出、拒绝服务、远程命令执行、注入、跨站、Web提权。 安全防护 1)中间件和Web应用的安全监测与防护方法:框架漏洞、权限绕过、弱口令、注入、跨站、文件包含、文件...
  • kaliWEB渗透笔记

    千次阅读 2019-11-01 16:22:42
    抓包协议分析 一般每300M分成一个包,这样抓包...Network、OS、WEB Server、App server、Web Application、Database、Browser 重要的header • Set-Cookie:服务器发给客户端的SessionlD (被窃取的风险) • Co...
  • Java Web程序设计笔记 • 【第2章 JSP基础】

    千次阅读 多人点赞 2021-02-23 21:16:18
    Java Server Page 简称 JSP,是由 Sun 公司倡导建立的一种动态网页技术标准,用于开发动态网页 JSP就是将传统Java代码嵌入到Html页面代码中,由Web服务器进行编译执行,生成最终的静态Html返回客户端 JSP优点: ...
  • Cookie 为 Web 应用程序保存用户相关信息提供了一种有用的方法。例如,当用户访问您的站点时,您可以利用 Cookie 保存用户首选项或其他信息,这样,当用户下次再访问您的站点时,应用程序就可以检索以前保存的信息。...
  • 本书根据了web前端开发所需的知识,规划了12次实验,设计了36个实验项目,将CSS技术贯穿所有的实验项目,实现了HTML、CSS、DIV、JavaScript、DOM完全地融会。全书分为上下两篇。上篇为实验(课内实验),包括HTML基础...
  • 关注公众号后回复“2019”领取我这两年整理的学习资料,涵盖自学编程、求职面试、算法刷题、Java技术学习、计算机基础和考研等8000G资料合集。 技术公众号:Java技术江湖 微信公众号【Java技术江湖】一位...
  • 什么是PageFlowPageFlow是一个基于Struts1.1的web应用编程模型,替代了早期Portal产品中的webflow,不再属于Portal专有,用以实现web应用中用户界面、业务逻辑、导航控制的分离,并且大大简化了WEB应用的开发过程,...
  • Chap 7 Notes-------------------------- 一、 概述1、 ASP.NET允许使用事件驱动的编程模型,这就像Windows本身一样,除非Windows响应了某个事件(如:单击图标、按“开始”菜单等),否则不会发生其他事件2、 ...
  • 前文分享了Wireshark抓包原理知识,并结合NetworkMiner工具抓取了图像资源和用户名密码,本文将讲解Python网络攻防相关基础知识,包括正则表达式、Web编程和套接字通信。本文参考了爱春秋ADO老师的课程内容,这里也...
  • Django企业开发实战 高效Python Web框架指南 笔记 (一) 内容: 作者是 the5fire,他的博客地址:https://www.the5fire.com/957.html 2016年10月《Python高效开发实战:Django、Tornado、Flask、Twisted》 刘长龙【摘要 ...
  • JAVA数据库编程(JDBC技术)-入门笔记

    千次阅读 2016-07-28 11:46:46
    本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学习一下。我现在很...
  • 白帽子讲Web安全读书笔记

    万次阅读 2014-02-08 14:19:22
    第7页 "No Patch for stupid"即“最大的漏洞就是人”,所以安全问题...安全的3要素:CIA机密性(Confidentiality):要求数据内容不能被泄露,常见实现技术为加密。完整性(Integrity):要求数据内容是完整的,没有被
  • Web Service学习笔记之----JAX-RPC

    千次阅读 2003-10-02 01:17:00
    Web Service学习笔记之----JAX-RPC导读本文是我对学习jwsdp-1.2时所做笔记的整理,其中主要是一些指导性的内容,并没有多少概念以及原理的介绍,读者可能觉得略显简单,如果想要学习基本概念可以参考网上有关Web ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,331
精华内容 17,732
关键字:

web编程技术笔记