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

如何做网站程序给自己公司做网站运营

如何做网站程序,给自己公司做网站运营,图片转链接在线转换,网上订酒店 网站开发play 拦截器在本教程的第一部分中#xff0c;我们介绍了创建#xff0c;发布和调用模块的基本知识。 我们创建的模块并没有真正做很多事情#xff0c;因此现在是时候使用Play的某些功能来扩展功能了。 1.拦截器 拦截器使您可以拦截对控制器的调用#xff0c;并增强或阻止其… play 拦截器 在本教程的第一部分中我们介绍了创建发布和调用模块的基本知识。 我们创建的模块并没有真正做很多事情因此现在是时候使用Play的某些功能来扩展功能了。 1.拦截器 拦截器使您可以拦截对控制器的调用并增强或阻止其行为。 在第一个示例应用程序中我们向MyLogger添加了显式调用以将消息记录到控制台。 如果我们扩大规模并且您想在每个控制器方法调用中都使用这个非常有用的插件那么您将编写大量样板代码。 拦截器使我们能够自动应用动作从而减少样板。 1.1添加代码 在app目录中创建一个名为action的新程序包。 在这里我们将添加LogMe注释以及将在存在注释时执行的LogMeAction。 此时LogMe.java是一个非常简单的注释它不需要任何参数 package actions;import play.mvc.With;import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** author Steve Chaloner (steveobjectify.be)*/ With(LogMeAction.class) Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD, ElementType.TYPE}) Inherited Documented public interface LogMe { } 看一下注释然后您将看到LogInAction.class–这让Play知道遇到此注释时它应该在实际目标之前执行LogInAction。 package actions;import play.mvc.Action; import play.mvc.Http; import play.mvc.Result;/*** author Steve Chaloner (steveobjectify.be)*/ public class LogMeAction extends Action{Overridepublic Result call(Http.Context context) throws Throwable{System.out.println(MyLogger: context.request().path());return delegate.call(context);} } 这是非常优雅的东西–动作具有LogMe的通用参数类型该参数类型可以访问分配给LogMe批注的任何参数。 这使您可以自定义动作的行为。 当我们添加一些额外的功能时我们将看到这一点。 一旦完成您的代码在本例中为System.out的另一个类然后您将返回proxy.classcontext的结果以恢复正常执行流程。 同时如果将LogMe添加到控制器方法则操作的路径将记录到控制台 如果将LogMe添加到控制器则对该控制器中任何方法的调用都将导致该路径记录到控制台。 1.2更新Build.scala 由于我们拥有新版本的mylogger因此我们应该更改版本号。 打开项目/Build.scala并进行更改 val appVersion 1.0-SNAPSHOT 至 val appVersion 1.1 1.3确保已检测到您的项目更改 如果您已经在mylogger / project-code中运行Play控制台则需要执行“重新加载”以获取对Build.scala的更改。 如果未打开控制台请立即打开它-更改将在启动时自动进行。 [mylogger] $ reload [info] Loading project definition from C:\Temp\mylogger\project-code\project [info] Set current project to mylogger (in build file:/C:/Temp/mylogger/project-code/) 1.4清理并发布 如前所述在发布之前进行清理始终是一个好主意以确保您不会推出任何不应存在的对象。 [mylogger] $ clean [success] Total time: 0 s, completed Mar 19, 2012 9:17:25 PM [mylogger] $ publish-local [info] Packaging /tmp/mylogger/project-code/target/scala-2.9.1/mylogger_2.9.1- 1.1 -sources.jar ... [info] Done packaging. [info] Wrote /tmp/mylogger/project-code/target/scala-2.9.1/mylogger_2.9.1- 1.1.pom [info] Updating {file:/tmp/mylogger/project-code/}mylogger... [info] Done updating. [info] :: delivering :: mylogger#mylogger_2.9.1;1.1 :: 1.1 :: release :: Mon Mar 19 21:17:30 CET 2012 [info] Generating API documentation for main sources... [info] Compiling 3 Java sources to /tmp/mylogger/project-code/target/scala-2.9.1 /classes... [info] delivering ivy file to /tmp/mylogger/project-code/target/scala-2.9.1 /ivy- 1.1 .xml model contains 7 documentable templates [info] API documentation generation successful. [info] Packaging /tmp/mylogger/project-code/target/scala-2.9.1/mylogger_2.9.1- 1.1-javadoc.jar ... [info] Done packaging. [info] Packaging /tmp/mylogger/project-code/target/scala-2.9.1/mylogger_2.9.1- 1.1 .jar ... [info] Done packaging. [info] published mylogger_2.9.1 to /home/steve/development/play/play-2.0/framework /../repository/local/mylogger/mylogger_2.9.1/ 1.1 /poms/mylogger_2.9.1.pom [info] published mylogger_2.9.1 to /home/steve/development/play/play-2.0/framework /../repository/local/mylogger/mylogger_2.9.1/ 1.1 /jars/mylogger_2.9.1.jar [info] published mylogger_2.9.1 to /home/steve/development/play/play-2.0/framework /../repository/local/mylogger/mylogger_2.9.1/ 1.1 /srcs/mylogger_2.9.1-sources.jar [info] published mylogger_2.9.1 to /home/steve/development/play/play-2.0/framework /../repository/local/mylogger/mylogger_2.9.1/ 1.1 /docs/mylogger_2.9.1-javadoc.jar [info] published ivy to /home/steve/development/play/play-2.0/framework/../repository /local/mylogger/mylogger_2.9.1/ 1.1 /ivys/ivy.xml [success] Total time: 3 s, completed Mar 19, 2012 9:17:31 PM请注意模块的版本在日志记录中已更改。 如果仍然看到1.0-SNAPSHOT请确保在发布之前重新加载了项目 1.5更新示例应用程序 返回示例应用程序在project / Build.scala中更改所需的模块版本 val appDependencies Seq(mylogger % mylogger_2.9.1 % 1.1) 重新加载并运行“依赖项”以确保您具有正确的版本。 现在您可以更新app / controllers / Application.java以使用以下新代码 package controllers;import actions.LogMe; import play.mvc.Controller; import play.mvc.Result; import views.html.index;LogMe public class Application extends Controller {public static Result index(){return ok(index.render(Your new application is ready.));} } 运行此示例您现在将看到通过注释应用的MyLogger输出。 2.添加了拦截器参数 仅记录请求的路径并不是特别有用或令人兴奋。 如果应该为每种控制器或控制器方法提供特定的日志消息怎么办 在这种情况下我们需要添加一些参数。 2.1更改注释签名 上传action / LogMe.java以使用value参数-这是默认的注释参数因此在使用时无需显式命名。 该值默认为空字符串因此如果此处不存在此消息则可以在操作中提供标准消息。 public interface LogMe {String value() default ; } 在操作中将继承的配置字段键入通用参数在本例中为LogMe并提供对参数的访问。 更新callHttp.Context方法以利用这一点。 public Result call(Http.Context context) throws Throwable {String value configuration.value();if (value null || value.isEmpty()){value context.request().path();}System.out.println(MyLogger: value);return delegate.call(context); } 2.2发布更改 再次重复步骤1.2至1.4这次将appVersion更改为1.2 2.3更新示例应用程序 与以前一样在Build.scala中更新依赖项版本重新加载并使用“ dependencies”进行确认。 现在您可以向LogMe批注添加一条消息 LogMe(This is my log message) public class Application extends Controller 运行该应用程序现在您将在控制台中看到注释消息。 [info] play - Application started (Dev) MyLogger: This is my log message 3.使拦截器交互 现在您希望掌握了这一点我们将加快一些速度。 在本节中我们将研究拦截器如何相互交互。 Play首先将拦截器应用于方法然后应用于控制器因此如果在方法和控制器级别都存在相同的注释它将执行两次。 LogMe批注可以同时应用于类级别和方法级别但是如果您对整个控制器有一条通用的日志记录消息而一个方法需要使用另一条消息那该怎么办呢 另外我们只希望每次调用一个日志消息。 为此我们可以使用传递给每个动作的上下文。 3.1更新模块 更新LogMeAction以使其了解以前的调用 package actions;import play.mvc.Action; import play.mvc.Http; import play.mvc.Result;/*** author Steve Chaloner (steveobjectify.be)*/ public class LogMeAction extends Action{public static final String ALREADY_LOGGED already-logged;Overridepublic Result call(Http.Context context) throws Throwable{Result result;if (context.args.containsKey(ALREADY_LOGGED)){// skip the logging, just continue the executionresult delegate.call(context);}else{// were not using the value here, only the key, but this// mechanism can also be used to pass objectscontext.args.put(ALREADY_LOGGED, );String value configuration.value();if (value null || value.isEmpty()){value context.request().path();}System.out.println(MyLogger: value);result delegate.call(context);}return result;} } 更新版本号清理重新加载和本地发布。 3.2更新示例应用程序 这次我们将在index方法中添加第二个注释。 这将覆盖控制器级别的注释。 因此在Build.scala中更新依赖项编号重新加载并运行。 package controllers;import actions.LogMe; import play.mvc.Controller; import play.mvc.Result; import views.html.index;LogMe(This is my log message) public class Application extends Controller {LogMe(This is my method-specific log message)public static Result index(){return ok(index.render(Your new application is ready.));} } 当您访问http// localhost9000时现在您将在控制台中看到以下内容 LogMe(This is my log message) [info] play - Application started (Dev) MyLogger: This is my method-specific log message 4.又是啤酒时间 您现在拥有了支持参数化操作的基础结构。 请记住很多东西都可以作为注释参数传递但是-重要的是-并非所有东西都可以传递。 您可能需要为某些任务发挥创造力 您可以在此处下载完整的源代码。 参考 Play 2的编写模块第2部分 Objective博客上JCG合作伙伴 Steve Chaloner的拦截器 。 翻译自: https://www.javacodegeeks.com/2012/04/writing-modules-for-play-2-part-2.htmlplay 拦截器
http://www.pierceye.com/news/115632/

相关文章:

  • 上海网站备案在哪里查询网站建设哪家稳妥
  • 建设网站做什么赚钱网站制作.
  • 小企业公司网站怎么建做网站英文编辑有前途吗
  • 优化图片传网站wordpress背景图片
  • 网站服务器哪家好些外包做网站不付尾款
  • 建站系统wordpress下载哪个公司的微信商城系统
  • 网站建设app开发合同深圳企业网站制作设计方案
  • 免费网站整站模板下载寻找做网站
  • 做此广告的网站做家纺的网站
  • 湖南畅想网站建设个人网站建设基本定位
  • 建站公司外包钓鱼网站怎么做
  • 个人网站logo需要备案吗鑫灵锐做网站多少钱
  • .xyz做网站怎么样网站产品预算
  • 建网站先要申请网址吗做网站给文件不侵权
  • 一元夺宝网站建设Wordpress 普通图片裁剪
  • 网站推广都有哪些自己有网站怎么优化
  • 宠物交易网站模板更改wordpress后台登录地址
  • 有电脑网站怎样建手机正规网络游戏平台
  • 网站抓取QQ获取系统cms监控手机客户端
  • 郑州网站推广价格优礼品网站模板
  • 百度指数不高的网站怎么优化网站图片类型
  • 北京专业做网站怎么样app软件开发摄像头
  • 网站建设导向erp系统软件免费版
  • 手表网站网站开发毕业设计文献综述
  • 台州网站制作维护关于微网站策划ppt怎么做
  • 网站建设中期目标开发app找那个公司
  • 跨境自建站模板网站内容和功能清单
  • 平面设计找素材的网站电子商务网站建设的步骤一般为(
  • 一个服务器可以备案几个网站凡科门店通怎么样
  • 房地产企业网站建设想给公司产品做个推广