zoukankan      html  css  js  c++  java
  • struts读书笔记

    2月27号晚上从48页看到60页:
    1、jsp文件必须在jsp服务器内运行
    2、jsp文件必须生成Servlet才能执行
    3、每个jsp页面的第一个访问者速度很慢,因为必须等待jsp编译成Servlet。
    4、jsp页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为jsp页面输送到客户端的是标准的HTML页面。
    5、jsp的注释<%--注释内容--%>,HTML注释<!--注释内容-->,jsp注释无法通过源代码查看到,HTML注释可以通过源代码查看到。jsp注释不会被发送到客户端。
    6、jsp声明语法<%!声明部分%>
    7、输出jsp表达式<%=表达式%>,等价于<%out.println("string")%>
    8、jsp的3个编译指令,page:该指令是针对当前页面的指令。include:用于指定包含另一个页面。taglib:用于定义和访问自定义标签。使用编译指令的语法格式<%@编译指令名  属性名="属性值"...%>
    2月28日晚上9点半到10点半,从60页到86页,158页到166页
    1、jsp动作指令
    jsp:forward:执行页面转向,将请求的处理转发到下一个页面
    jsp:param:用于传递参数,必须与其他支持参数的标签一起使用
    jsp:include:用于动态引入一个jsp页面
    jsp:plugin:用于下载JavaBean或Applet到客户端执行
    jsp:useBean:创建一个JavaBean的实例
    jsp:setProperty:设置JavaBean实例的属性值   语法<jsp:setProperty name="BeanName" property="protertyName" value="value"/>
    jsp:getProperty:输出JavaBean实例的属性值   语法<jsp:getProperty name="BeanName" property="protertyName"/>
    2、jsp的9个内置对象:application、config、exception、out、page、pageContext、request、response、session
    3、Struts2应用开发步骤:
    (1)在web.xml文件中定义核心Filter来拦截用户请求。
    (2)如果需要一POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅只是以GET方式发送请求,则无须经过这一步。
    (3)定义处理用户请求的Action类。
    (4)配置Action。
    (5)配置处理结果和物理视图资源之间的对应关系。
    (6)编写视图资源
    2月29日,从166页看到190页,

    1、Struts除了可使struts.xml文件来管理配置之外,还可以使用struts.properties文件来管理常量,该文件定义了Struts框架的大量常量,开发者可以通过改变这些常量来满足应用的需求。
    2、struts常量的配置
    struts.action.extension:该常量指定需要Struts2处理的请求后缀,该常量的默认值是action,即所有匹配*.action的请求都有Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。
    3、配置Action,<package.../>的几个属性:
    name:这是个必需属性,该属性指定该包的名字,该名字是该包被其他包引用的key。
    extends:该属性是一个可选属性,该属性指定该包继承其他包。继承其他包,可以继承其他包中的Action定义、拦截器定义。
    namespace:该属性是一个可选属性,该属性定义该包的命名空间。
    abstract:该属性是一个可选属性,它指定该包是否是一个抽象包。抽象包中不能包含Action定义。
    4、struts-default是个抽象包,在struts2-core-2.2.jar文件里,struts-default包下包含大量结果类型定义,拦截器定义,拦截器引用定义的,这些定义是配置普通Action的基础,所以开发者定义的package通常应该继承该包。
    5、如果package中没有指定namespace属性,该包就会使用默认的命名空间。
    6、如果请求为/barspace/bar.action,系统首先查找/barspace命名空间里名为bar的Action,如果在该命名空间里找到对应的Action,则使用该Action处理用户请求;否则,系统将到默认命名空间中查找名为bar的Action,如果找到对应的Action,则使用该Action处理用户请求;如果两个命名空间都找不到名为bar的Action,则系统出现错误!
    7、通常需要为action元素指定一个class属性,其中class属性指定了该Action的实现类。class属性并不是必需要的,如果我们不为<action.../>元素指定class属性,系统则默认使用系统的ActionSupport。
    8、<action.../>,如果action name中需要使用斜线(/)的话,设置Action name中出现斜线通过struts.enable.SlashesInActionNames常量指定。设置常量为true。虽然Action的name命名非常灵活,但如果name属性分配一个带点(.)或者带中画线(-)的值,例如my.user或者my-action等,则可能引发一些位置异常。因此,不推荐在Action的name属性值中使用(.)和中画线(-)。
    9、使用动态方法,动态方法的方法声明与系统默认的execute方法的方法只有方法名不同,其他部分如形参类表、返回值类型都应该完全相同。使用动态调用前必须设置Struts2允许动态方法调用。开启系统的动态方法调用时通过设置struts.enble.DynamicMethodInvocation常量完成的,设置该常量的值为true,将开启动态方法调用;否则将关闭动态调用。
    3月1日 晚上9点半到十点半190到200页
    1、如果有URL为bacAction.action的请求,如果struts.xml文件中有名为abcAction的Action,则一定有该Action来处理用户请求;如果struts.xml文件中没有abcAction的Action,则搜寻name属性值匹配的abcAction的Action,例如name为*Action或*,*Action并不会比*更优先匹配abcAction的请求,而是先找到哪个Action,就会由哪个Action来处理用户请求。
    2、因为除非请求的URL与Action的name属性绝对相同,否则将按先后顺序来决定由哪个Action来处理用户请求,因此,我们应该将nam="*"的Action配置在最后,否则Struts将使用该Action来处理所有希望使用模式匹配的请求。
    3、将默认Action配置在默认命名空间里就可以让该Action处理所有用户请求,因为默认命名空间的Action可以处理任何命名空间的请求。
    3月2日
    1、Struts2默认的结果类型是dispatcher,但我们可以通过修改配置文件来改变默认的结果类型。一旦改变了默认的结果类型,如果配置<result.../>元素师省略type元素,则意味着使用默认的结果类型。如果我们省略了<result.../>元素的name属性,系统将采用默认的name属性值,默认的属性值为success。因此即使我们不给出逻辑视图名:success,系统也一样为success逻辑视图配置结果。如果配置<result.../>元素师没有指定location参数,系统将会把<result...>...</result>中间的字符串当成实际视图资源;
    2、Struts2内建的支持结果类型如下,
    chain结果类型:Action链式处理的结果类型。
    dispatcher结果类型:用于指定使用JSP作为视图的结果类型。
    freemarker结果类型:用于指定是引用FreeMarker模板作为视图的结果类型。
    httpheader结果类型:用于控制特殊的HTTP行为的结果类型。
    redirect结果类型:用于直接跳转到其他URL的结果类型。
    redirectAction结果类型:用于直接跳转到其他Action的结果类型。
    stream结果类型:用于向浏览器返回一个InputStream(一般用于文件下载)
    velocity结果类型:用于指定使用Velocity模板作为视图的结果类型。
    xslt结果类型:用于与XML/XSLT整合的结果类型。
    plainText结果类型:用于显示某个页面的原始代码结果类型。
    3、dispatcher结果类型与redirect结果类型的差别主要就是转发和重定向的差别:重定向会丢失所有的请求参数、请求属性,当然也丢失了Action的处理结果。
    4、iterator标签主要用于对集合进行迭代,这里的集合包含List、Set和数组,也可以对Map集合进行迭代输出,
    使用<s:iterator.../>标签对集合进行迭代输出时,可以指定如下三个属性。
    value:这是一个可选的属性,value属性指定的就是被迭代的集合,被迭代的集合通常都使用OGNL表达式指定。如果没有指定value属性,则使用ValueSrack栈顶的集合。
    id:这是一个可选的属性,该属性指定了集合里元素的ID。
    status:这是一个可选的属性,该属性指定迭代式的IteratorStack实例,通过该实例即可判断当前迭代元素的属性。例如是否为最后一个,以及当前迭代元素的索引等。

  • 相关阅读:
    R-CNN学习笔记
    Numpy和Pandas
    用python解决打标签时将xml文件的标签名打错
    爬虫Ⅱ:scrapy框架
    爬虫Ⅰ:爬虫的基础知识
    Linux学习笔记
    MySql笔记Ⅱ
    MySql笔记Ⅰ
    Qt数据库报错:“Unable to execute statement”
    Qt数据库报错“out of memory Error opening database“
  • 原文地址:https://www.cnblogs.com/woodjay/p/2392532.html
Copyright © 2011-2022 走看看