sitemesh的使用---修饰器

DEA各种模型原理及stata代码实现 DEA各种模型原理及stata代码实现DEA各种模型原理及stata代码实现一、CCR和BCC1.原理2.效率测算stata代码3.Malmquist指数3.1M指数3.2Global-Malmquist指数4.指数计算代码与案例二、SBM模型1.原理2.stata代码实现三、方向性距离函数(DDF)1.原理2.stata代码实现3.非径向DDF模型(NDDF)3.GML指数4.指数测算四、总结 DEA各种模型原理及stata代码实现 一、CCR和BCC 1.原理 CCR模型产出导向下的效率通过求解以下规划 阅读详情
假设你打算结合多种技术来构建一个企业级web站点。比如,你准备采用J2EE技术往你的web站点里添加新内容,而这个系统的其他部分是用CGI或者微软的IIS Server搭建的。

在 这种情况下,怎样让你的应用系统从外观和感受(look and feel)上保持一致呢?一种办案就是采用J2EE技术全部重写,然后选用一种框架,比如Struts-Tiles,但这种办案的开发成本太高,不太现 实。另一种可选方案是在你的应用系统的各个部分采用相同的Look and Feel。但这种方案会使维护站点变成噩梦,因为每当一个应用系统里面的Look and Feel需要改变的时候,你就需要让系统里的其他web应用保持同样的改变。

大多数用于解决这种商务需求的可用框架都有一个共同的缺点, 他们不是平台相关就是框架相关。当你决定采用Tiles作为struts修饰器的时候,需要创建tiles定义文件tiles-defs.xml,然后在 struts-config.xml里面声明forwards,引用这些tiles以修饰原始的JSP。

最简单的一种可能的解决方案是,全部采用纯html方式来生成你的web应用,每一个html页面都不需要知道自己将会被如何修饰,而是在外部采用某种机制来选择合适的修饰器修饰它们。这就是SiteMesh的功能。

SiteMesh是基于Java、J2EE和XML的开源框架,依赖于从Servlet 2.3版本里引入的新功能——过滤器(Filters)

安装和设置

按照以往的经验,学习任何新技术或新框架最好的办法,就是使用它来创建一个简单的应用程序。所以,我们将使用SiteMesh来创建一个简单的Struts应用程序。我们的应用程序包括三个页面:

下面是创建这个简单web应用程序的步骤:

1.SiteMesh基于过滤器,所以我们需要把SiteMesh过滤器通知给我们的web应用程序。在web.xml文件里加入如下几行:

<filter>
        <filter-name>sitemesh</filter-name>
        <filter-class>
                com.opensymphony.module.sitemesh.filter.PageFilter
        </filter-class>
    <init-param>
        <param-name>debug.pagewriter</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
这 几行是告诉web容器,所有对web应用的请求都会经由PageFilter“过滤”一下。PageFilter是sitemesh-2.1.jar里的 一个类,你可以从http://www.opensymphony.com/sitemesh/download.html下载该jar包。

2.在WEB-INF目录下生成一个decorators.xml文件,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<decorators defaultdir="/decorators">
    <!-- Any urls that are excluded will never be decorated by Sitemesh -->
    <excludes>
        <pattern>/exclude.jsp</pattern>
        <pattern>/exclude/*</pattern>
    </excludes>
    <decorator name="main" page="main.jsp">
        <pattern>/*</pattern>
    </decorator>
    <decorator name="panel" page="panel.jsp">
     <pattern>/google.html</pattern>
    </decorator>
    <decorator name="printable" page="printable.jsp"/>
    <decorator name="black" page="black.jsp"/>
    <decorator name="nopanelsource" page="nopanelsource.jsp"/>
    <decorator name="badpanelsource" page="badpanelsource.jsp"/>
    <decorator name="velocity" page="velocity.vm">
        <pattern>/velocity.html</pattern>
    </decorator>
    <decorator name="freemarker" page="freemarker.ftl">
        <pattern>/freemarker.html</pattern>
    </decorator>
    <decorator name="test" page="test.jsp">
        <pattern>/agent.jsp</pattern>
    </decorator>
</decorators>

decorators.xml 文件用来在你的应用程序里定义修饰器(decorators)。在这个文件里,每个<decorator>元素定义一个修饰器,name指定 修饰器名,page指定修饰器所使用的JSP页面。<pattern>子元素指定这些修饰器如何应用到实际的页面上去。

在我 们的示例web应用里,定义了多个修饰器,我们只使用用红色字体标记的那个修饰器。

3.在WebContent/decorators目录下创建main.jsp:

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>

<html>
 <head>
  <title><decorator:title default="Mysterious page..." /></title>
   <decorator:head />
 </head>
 <body>
  <table width="100%" height="100%">
   <tr>
    <td valign="top">decorator test

    </td>
    <td width="100%">
     <table width="100%" height="100%">
      <tr>
       <td id="pageTitle">
        <decorator:title />
       </td>
      </tr>
      <tr>
       <td valign="top" height="100%">
        <decorator:body />
       </td>
      </tr>
      <tr>
       <td id="footer">
        <b>Disclaimer:</b>
        This site is an example site to demonstrate SiteMesh. It serves no other purpose.
       </td>
      </tr>
     </table>
    </td>
   </tr>
  </table>
 </body>
</html>

一 个SiteMesh修饰器其实就是一个使用SiteMesh自定义标签的JSP页面。在我们的web应用里,当用户请求help页面的时候, SiteMesh会拦截这个请求,然后再把它发送给web应用。而当应用返回响应的时候,SiteMesh会结合headerfooter.jsp文件解 析这个响应,遇到<decorator:head/>就插入响应文件的<head>,遇到<decorator: body/>就插入响应文件的<body>。最后,被headerfooter.jsp修饰过的文件会被返回给客户端。

4.在WebContent目录下创建help.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>help 页面</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>
 
  <body>
    <font color="red">This is my JSP page.</font> <br>
  </body>
</html>

这是一个在web应用里很常见的help页面。

5.在浏览器里请求help.jsp页面,测试SiteMesh安装是否正常。浏览器将会返回一个包含页头和页脚的help页面。

SiteMesh架构

SiteMesh 架构基于PageFilter——一个Servlet过滤器。容器接收到页面请求时,会把请求传递给PageFilter,PageFilter收集应用 程序的响应细节,生成自定义的响应对象,然后连同请求一起传递给web应用程序。web应用程序把响应资源写入到自定义响应对象里,再返回给 PageFilter。

1.解析阶段
当控制返回给PageFilter的时候,它会检查web应用生成响应的内容类型 (content type),然后基于响应类型,生成不同的解析器来解析响应。比如,如果应用返回text/html类型的内容,SiteMesh会生成一个 FastPageParser实例,并把web应用生成的页面传递给它。FastPageParser会解析这个页面,提取出这个页面的header、 footer、title 等内容。

2.修饰阶段

解析结束后,SiteMesh开始修饰页面。这一阶段分成两部分:

a.决定如何修饰

SiteMesh 有一个概念,叫做修饰器映射,实现这个概念的接口是DecoratorMapper(有init()和getDecorator()方法)。映射器在 sitemesh.xml里声明。在sitemesh.xml文件里,每一个映射器都是它上一个映射器的父映射。当SiteMesh需要一个修饰器来修饰 页面的时候,会在sitemesh.xml里查找映射器,生成找到的第一个映射器的实例并调用getDecorator()方法,在这个方法里尝试查找针 对那个页面的修饰器。如果找到了就返回;否则,调用父映射器的getDecorator()方法,反复进行这个过程,直到找到正确的修饰器。

b.应用修饰

找到修饰器后,SiteMesh会把请求分发给它。修饰器JSP页面会访问在前阶段里解析出来的页面信息。使用各种SiteMesh自定义标签来提取页面信息不同的部分(比如header、footer和title)并把它们插入到输出文件合适的位置上去。

你可以在sitemesh.xml文件里自定义使用哪个页面解析器来解析指定的内容类型或者使用哪种修饰器映射方案,比如:

<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml"/>
<excludes file="${decorators-file}"/>
<page-parsers>
<parser content-type="text/html"
class="com.opensymphony.module.sitemesh.parser.FastPageParser" />
</page-parsers>
<decorator-mappers>
<mapper
class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
<param name="property.1" value="meta.decorator" />
<param name="property.2" value="decorator" />
</mapper>
<!-- Mapper for localization -->
<mapper
class="com.opensymphony.module.sitemesh.mapper.LanguageDecoratorMapper">
<param name="match.en" value="en" />
<param name="match.zh" value="zh" />
</mapper>
<!-- Mapper for browser compatibility -->
<mapper
class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
<param name="match.MSIE" value="ie" />
<param name="match.Mozilla/" value="ns" />
</mapper>
<mapper
class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
<param name="decorator" value="printable" />
<param name="parameter.name" value="printable" />
<param name="parameter.value" value="true" />
</mapper>
<mapper
class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
<param name="decorator.parameter" value="decorator" />
<param name="parameter.name" value="confirm" />
<param name="parameter.value" value="true" />
</mapper>
<mapper
class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}" />
</mapper>
</decorator-mappers>
</sitemesh>

在 这个列表里,<property name="decorators-file">指定了用于定义修饰器的文件。<page-parsers>定义了SiteMesh可 以处理的内容类型。每一个<parser>子元素指定哪一个解析器解析哪一种特定的内容类型。在我们的示例sitemesh.xml文件里, 我们告诉SiteMesh使用FastPageParser解析text/html类型的内容。默认地,SiteMesh只可以处理HTML,但我们可以 创建自己的解析器来处理其他的内容类型。

<decorator-mappers>子元素定义了映射方案,SiteMesh使 用这个映射方案来查找修饰指定页面的修饰器。你可以使用<param>子元素来配置每一个映射器。SiteMesh会把这些配置信息包装成 java.util.Properties对象传递给映射器的init()方法。

区域相关的修饰器

在我们的示例sitemesh.xml文件里,有下面几行标签:

<mapper class="com.opensymphony.module.sitemesh.mapper.LanguageDecoratorMapper">
<param name="match.en" value="en" />
<param name="match.zh" value="zh" />
</mapper>

当 查找一个应用于页面的修饰器时,SiteMesh会首先读取请求头部的Accept-Language信息。如果匹配en区域,SiteMesh会在修饰 器JSP文件名末尾追加-en。在我们的例子里,如果请求定义了修饰器headerfooter.jsp的help.jsp页面,并且使用的是区域是英 国,SiteMesh会首先查找并应用headerfooter-en.jsp修饰器,如果找不到再去应用headerfooter.jsp。

浏览器相关的修饰器

可以使用AgentDecoratorMapper来保证浏览器的兼容性:

<mapper
class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
<param name="match.MSIE" value="ie" />
<param name="match.Mozilla/" value="ns" />
</mapper>

这意味着当SiteMesh查找一个修饰器来修饰页面的时候,会首先提取出请求头部的User-Agent信息。如果是IE,就加上-ie到修饰器的文件名末尾,并查找和应用这个修饰器。如果找不到这样的修饰器,则继续应用headerfooter.jsp。

高级SiteMesh

SiteMesh提供映射器,让每一个页面参与到寻找自己修饰器的过程中去。

PrintableDecoratorMapper

大 多数的web站点都提供了一个获得可打印版本页面的功能。所谓可打印版本,一般是指去除了页头、页尾和页边菜单,并使用了另一套样式表的页面。在 SiteMesh里,我们可以使用PrintableDecoratorMapper来提供这个功能。要使用这个映射器,需要在sitemesh.xml 里追加如下几行:

<mapper
class= "com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
<param name="decorator" value="printable" />
<param name="parameter.name" value="printable" />
<param name="parameter.value" value="true" />
</mapper>

传递给PrintableDecoratorMapper的三个配置参数会被包装成java.util.Properties对象传递给init()方法。

•decorator
用来生成可打印版本页面的修饰器名。

•parameter.name
用来通知SiteMesh我们需要一个可打印版本的请求参数名。比如在我们的例子里,通过在查询字符串里追加printable=true参数传递

•parameter.value
设置可打印参数为何值时SiteMesh提供可打印版本的页面。

PageDecoratorMapper

页面可以通过定义META属性来重载指定修饰自己的修饰器名。

要使用这个映射器,需要在sitemesh.xml文件里加入如下几行:

<mapper
class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
<param name="property.1" value="meta.decorator" />
</mapper>

PageDecoratorMapper可以获取一个参数列表。在我们的例子里,提供了一个参数名,指定了通过META属性来取得修饰器名。所以如果我们希望使用test修饰器来修饰页面,则在该页头部加入:

<META name="decorator" content="test">

PageDecoratorMapper提供了一种静态的方法来让页面选择自己想要使用的修饰器。另外,页面还可以通过使用ParameterDecoratorMapper在运行时指定要使用的修饰器。

ParameterDecoratorMapper

要使用ParameterDecoratorMapper,在sitemesh.xml里追加如下几行:

<mapper
class= "com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
<param name="decorator.parameter" value="decorator" />
<param name="parameter.name" value="confirm" />
<param name="parameter.value" value="true" />
</mapper>

三个参数的意义分别如下:

•decorator.parameter
指定修饰器所使用的请求参数名。

•parameter.name
确定使用请求修饰器的确认参数名。

•parameter.value
确定使用请求修饰器的确认参数值。

比如,如果你想使用test修饰器来修饰help.jsp,可以像下面这样访问help.jsp

help.jsp?decorator=test&confirm=true

除了以上这些映射器以外,SiteMesh还提供了更多有用的映射器,比如:

•FrameSetDecoratorMapper
当页面是Frame的时候使用。

•CookieDecoratorMapper
可以通过cookie来指定想要使用的修饰器。

•RobotDecoratorMapper
当请求者被确人为robot的时候使用指定的修饰器。你可以手动的在请求头部追加robot关键字,或者通过修饰器来做。

Velocity 和 Freemarker 修饰器

SiteMesh 并没有限制你只能修饰JSP页面。你可以自由的选择想要修饰的对象,比如Velocity或者Freemarker。Velocity和 Freemarker是一种可被用于生成web页面的模板语言。这些语言比JSP更加的简单易用,但在可编程性方面不如JSP灵活。

SiteMesh通过两个servlet支持这两种模板语言,这两个servlet也被定义在SiteMesh.jar文件里。我们可以像这样在web.xml里声明这两个servlet:

<servlet>
<servlet-name>sitemesh-velocity</servlet-name>
<servlet-class>
com.opensymphony.module.sitemesh.velocity.VelocityDecoratorServlet
</servlet-class>
</servlet>
<!--Declare servlet for handling freemarker requests -->
<servlet>
<servlet-name>sitemesh-freemarker</servlet-name>
<servlet-class>
com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet
</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
</init-param>
<init-param>
<param-name>default_encoding</param-name>
<param-value>ISO-8859-1</param-value>
</init-param>
</servlet>
<!-- Velocity servlet should serve all requests with .vm extension-->
<servlet-mapping>
<servlet-name>sitemesh-velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
<!-- FreeMarker servlet should serve all requests with .dec extension-->
<servlet-mapping>
<servlet-name>sitemesh-freemarker</servlet-name>
<url-pattern>*.dec</url-pattern>
</servlet-mapping>

当 然,我们还需要在lib文件夹里引入freemarker.jar、velocity-dep.jar和velocity-tools- view.jar。这些jar文件已经包含在SiteMesh的发布包里了。下面让我们修改第一个示例应用,使用Velocity和Freemarker 修饰器来取代JSP。在我们第一个示例应用里定义了两个修饰器:headerfooter和sidemenu。下面我们创建一个 headerfooter.dec:

<html>
<head>
<title>My Site - $Advanced SiteMesh</title>
${head}
</head>
<body>
<table border="1">
<tr>
<td>SiteMesh Corporation</td>
</tr>
<tr>
<td>${body}</td>
</tr>
<tr>
<td>SiteMesh copyright</td>
</tr>
</table>
</body>
</html>

在 这个页面里,我们使用Freemarker模板来请求header、footer和title,而不是使用JSP自定义标签,但页面布局是一样的。当容器 接收到一个.dec扩展名的页面请求时,会把这个请求传递给FreemarkerDecoratorServlet,后者将会调用 FreemarkerDecorator修饰生成的HTML页面。我们使用$Advanced SiteMesh模板来访问应用生成的web页面的title,${head}访问head,${body}访问body。Freemarker提供了非 常丰富的模板,想深入研究的话可以参考http://www.javaworld.com/jw-01-2001/jw-0119- freemarker.html。

相似的,在decorators目录下创建sidemenu.vm文件,这是Velocity修饰器文件:

<html>
<head>
<title>My Site - $title</title>
$head
</head>
<body>
<table border="1">
<tr>
<td> SiteMesh Header </td>
</tr>
<tr>
<td> Sidemenu </td>
<td> $body </td>
</tr>
<tr>
<td> SiteMesh Footer </td>
</tr>
</table>
</body>
</html>

使用$title模板取代<decorator:title/>,使用$head和$body Velocity模板来取代相应的JSP自定义标签。

结论

基 于过滤器的SiteMesh是一个非常灵活和简单易用的修饰器框架。但它还是存在着一些问题。首先,从Servlet 2.3版本才开始支持过滤器,所以一些早期版本的应用服务器无法支持SiteMesh。在使用SiteMesh之前请先检查一下您想使用的应用服务器是否 支持过滤器。

另外,过滤器只有在使用浏览器请求一个页面的时候才能生效。所以,如果你通过浏览器访问home.jsp,它将被修饰,但如 果你使用Servlet的RequestDispatcher.include()或者forward()来控制home.jsp,修饰器就不起作用了。 但是不用担心,从Servlet 2.4版本开始,你可以配置过滤器适用的环境,包括forward和include的情况下都可以使用了。
第1部分 基础算法(提高篇)--第2章 二分与三分1439:【SCOI2010】传送带 1439:【SCOI2010】传送带 时间限制: 2000 ms 内存限制: 65536 KB 提交数: 372 通过数: 212 【题目描述】 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间。 【输入】 输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整 阅读详情

相关推荐

Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略

本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。

moon9的博客 945

告别玄学调参:手把手教你用20元件模型搞定GaN HEMT高频仿真(附S参数提取避坑指南)

本文详细介绍了如何使用20元件模型优化GaN HEMT高频仿真,解决传统16元件模型在10GHz以上频段的误差问题。通过S参数提取避坑指南和实战案例,帮助工程师精准建模分布式电极效应和寄生反馈路径,提升射频电路设计效率。

weixin_42523693的博客 442

Sitemesh入门和使用笔记

1.Sitemesh介绍 SiteMesh 是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的 目的。它不仅仅能处理动态的内容,如jsp,php,asp等产生的内容,它也能处理静态的内容,如htm的内容,使得它的内容也符合你的页面结构的要求。 2.使用场景举例 网站页面头部header和底部footer信息很多页面都有用到,只需要把头部和底部信息单独放在两...

Jeffrey的博客 1566

从CLIP到AnomalyCLIP:零样本异常检测的跨领域进化之路

本文探讨了从CLIP到AnomalyCLIP的技术演进,重点介绍了零样本异常检测在跨领域应用中的突破。AnomalyCLIP通过对象无关提示学习和多尺度特征提取,显著提升了工业质检、医疗影像等领域的检测精度,实现了高达96.4%的金属螺母划痕检测精度和85.7%的皮肤癌敏感度。这一技术为多模态模型在异常检测中的应用开辟了新路径。

r2s3t4的博客 111

Ovito隐藏技巧:用Expression Selection快速提取分子链(附模糊背景配置参数)

本文详细介绍了Ovito软件中Expression Selection功能的隐藏技巧,用于从复杂的分子动力学模拟数据中快速、精准地提取目标分子链。通过结合Expand Selection和Invert Selection等修饰器,形成一套高效的工作流,并深入解析了实现SCI论文级渲染效果的景深模糊参数配置,帮助研究者大幅提升数据处理与图片生成效率。

pz890123的博客 867

SiteMesh详解

1.Sitemesh简介         Sitemesh是一个网络布局和修饰的框架,基于filter技术.       作用:利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的,减少重复代码的编写.(可能看到这儿不是很清楚,下面配几张图加以解释).      举个应用的场景: 点击下图上方的菜单.在浏览器的下方会显示出相应的界面.此时你会发现上面菜单栏的内容是一样的,而下面显示

qq_38255772的博客 748

ZEMAX学习第7天-手机镜头光学系统设计全过程案例

接下来对系统微调,依次缩小CRA和畸变,首先对CRA进行依次递减(39°、38°、37°、36°、35°),目前CRA角度40度,每次下降一度进行优化,利用MAXX加OPLT一起控制,控制小于35°。可以看出在标注的三个地方镜头曲率变化,导致PY=1的光线走向奇特,因此需要对矢高进行调整,按照标注的地方依次调整(从右到左)至传函变好,越靠近右边对其余视场影响越小。3.圆锥系数值较大,透镜形状怪异;一、第1,3镜子偏厚,第4镜子偏薄,45镜子间隔边缘偏小,第5片镜子中心厚度与边缘厚度相差较大,需要控制;

liningliwei的博客 1078

SiteMesh3快速入门

文章目录介绍工作原理配置及使用添加maven依赖webxml中添加SiteMesh过滤器创建一个装饰页面(decorator page)创建一个被装饰页面(content page)配置方式XML配置Java配置查看效果高级配置XML形式配置Java形式配置 介绍 工作原理 配置及使用 添加maven依赖 webxml中添加SiteMesh过滤器 创建一个装饰页面(decorator page) ...

炎溟墨的博客 372

从零配置Archery:手把手教你用Docker部署多数据库审核系统(MySQL/PostgreSQL/ClickHouse)

本文详细介绍了如何从零开始使用Docker部署Archery多数据库审核系统,涵盖MySQL、PostgreSQL和ClickHouse的配置与整合。文章提供了生产级Docker-compose配置、审核规则定制、工单流程设置以及企业微信通知集成等实战指南,帮助团队构建统一的企业级SQL审计平台,提升数据库操作规范与安全。

e4f5g6h7的博客 941

告别手动画图!用Cadence SKILL写一个参数化电感PCell(附完整代码)

本文详细介绍了如何使用Cadence SKILL语言开发参数化电感PCell,实现电感版图的自动化生成。通过动态调整线宽、圈数等几何参数,自动创建端口并进行工艺规则校验,大幅提升高频电路设计效率。附完整代码示例,帮助工程师快速掌握PCell开发技巧。

weixin_30684743的博客 368

SiteMesh介绍

略

sayyy的专栏 443

PADS VX2.7学习记录06-PADS Router软件功能操作

PADS VX2.7学习记录06-PADS Router软件功能操作

qq_31444421的博客 7861

[Struts 2] decorator(sitemesh)修饰器的配置和使用

在struts2项目的基础上,配置sitemesh

gopain 2895

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SiteMesh的使用(转)

你打算结合多种技术来构建一个企业级web站点。比如,你准备采用J2EE技术往你的web站点里添加新内容,而这个系统的其他部分是用CGI或者微软的IIS Server搭建的。在 这种情况下,怎样让你的应用系统从外观和感受(look and feel)上保持一致呢?一种办案就是采用J2EE技术全部重写,然后选用一种框架,比如Struts-Tiles,但...

diaoxianguan3934的博客 263

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SiteMesh简介二

  5、 在WEB-INF下面建立文件sitemesh.xml,用来告诉框架,什么类型需要用到什么解析器,用到什么映射器,(这个文件可以不加)代码如下 &lt;sitemesh&gt;     &lt;property name="decorators-file" value="/WEB-INF/decorators.xml" /&gt;     &lt;excludes file="${...

kanful的专栏 210

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

高级Sitemesh(Advanced Sitemesh)

1.序言 假设你打算结合多种技术来构建一个企业级web站点。比如,你准备采用J2EE技术往你的web站点里添加新内容,而这个系统的其他部分是用CGI或者微软的IIS Server搭建的。 在这种情况下,怎样让你的应用系统从外观和感受(look and feel)上保持一致呢?一种办案就是采用J2EE技术全部重写,然后选用一种框架,比如Struts-Tiles,但这种办案的开发成本太高,不太...

zhglhy的专栏 180

最新翻译力作 - Advanced SiteMesh

假设你打算结合多种技术来构建一个企业级web站点。比如,你准备采用J2EE技术往你的web站点里添加新内容,而这个系统的其他部分是用CGI或者微软的IIS Server搭建的。在这种情况下,怎样让你的应用系统从外观和感受(look and feel)上保持一致呢?一种办案就是采用J2EE技术全部重写,然后选用一种框架,比如Struts-Tiles,但这种办案的开发成本太高,不太现实。另一种可选方案

1393

Velocity and FreeMarker Decorators

OverviewSiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站.在WebWork中集成SiteMesh相当容易: 实际上什么也不用做....

cmuc21661的博客 180

webwork的过滤器

在webwork的架构中,标准过滤器推荐从ActionContextCleanUp,然后是其他过滤器,最后才是FilterDispatcher,FilterDispatcher通常是将请求提交给ActionMapper。ActionContextCleanUp是首要的任务是为了集成SiteMesh服务。它会通知FilterDispatcher在正确的时间清除请求。否则,ActionContext将...

李义星 289

sitemesh

假设你打算结合多种技术来构建一个企业级web站点。比如,你准备采用J2EE技术往你的web站点里添加新内容,而这个系统的其他部分是用CGI或者微软的IIS Server搭建的。 在这种情况下,怎样让你的应用系统从外观和感受(look and feel)上保持一致呢?一种办案就是采用J2EE技术全部重写,然后选用一种框架,比如Struts-Tiles,但这种办案的开发成本太高,不太现实。另一种

lelong2002huyao的专栏 529

在Struts2中使用SiteMesh插件

     最近在读《Struts2权威指南》(李刚著),这本书写得非常好,对我学习Struts2帮助很大。在学习这本书的过程中,我自己做了些笔记和例子,下面是关于在Struts2中如何使用SiteMesh插件:    通过使用SiteMesh插件,就可以在Struts2应用中使用SiteMesh装饰器页面来统一应用程序所有页面的显示风格。实际上,在Struts2中使用SiteMesh非常简单,

naubie的专栏 6175

Advanced SiteMesh

假设你打算结合多种技术来构建一个企业级web站点。比如,你准备采用J2EE技术往你的web站点里添加新内容,而这个系统的其他部分是用CGI或者微软的IIS Server搭建的。在这种情况下,怎样让你的应用系统从外观和感受(look and feel)上保持一致呢?一种办案就是采用J2EE技术全部重写,然后选用一种框架,比如Struts-Tiles,但这种办案的开发成本太高,不太现实。另一种可选方案

SQ 749
上一篇: 从今天开始我要陆续把工作中学到的知识发布到我的博客上,希望能对别人有些帮助,也用于记录我在工作中的点点滴滴。
下一篇: 实现拖放层的JS代码
eft21
博客等级 码龄19年 37粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值