因為想要在一台電腦上同時執行 ASPX 與 JSP 而只能使用80 PORT, 所以只能透過IIS 來轉發 request到tomcat 使用的Tomcat版本是8.0 方法如下: 1.下載 The Apache Tomcat Connectors 我下載的版本是1.2.40 可以得到 isapi_redirect.dll , 我是放在 c:\tomcat8\bin\ 2.設定connector 根據官網的文件 isapi_redirect 的設定方式有兩種 (1) registry setting 在HKLM\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0 新增最少以下資訊 extension_uri:/jakarta/isapi_redirect.dll (固定值) log_file: c:/tomcat8/logs/isapi_redirect.log log_level: info worker_file: c:/tomcat8/conf/workers.properties (workers設定檔的位置) worker_mount_file: C:/tomcat8/conf/uriworkermap.properties (uri對照的mapping) (2)isapi_redirect.properties 設定同上, 不過我試的結果是沒有用, 所以用第一種方法 #固定值 extension_uri=/jakarta/isapi_redirect.dll #log檔放的位置可以依日期來當檔名可以參考官網設定 log_file=c:/tomcat8/logs/isapi_redirect.log #log的記錄內容有 debug, info, warn, error, trace log_level=info #worker設定檔的位置 worker_file=c:/tomcat8/conf/workers.properties #worker uri mapping對照檔的位置 worker_mount_file=C:/tomcat8/conf/uriworkermap.properties 3.建立workers.properties文件 官網worker參數設定 #隨便設定, 但是要跟等等設定的 uriworkermap.properties一致就好 worker.list=jspWorker #可以是ajp13, ajp14, jni, lb 或是 status #不過以下的設定需要跟server.xml的connector的設定一致 worker.geloinWorker.type=ajp13 #tomcat server所在的電腦 worker.geloinWorker.host=localhost worker.geloinWorker.port=8009 4.設定uriworkermap.properties 詳細設定要參考官網的uri設定 這邊要跟workers.properties的 worker.list設定一致 /*.jsp=jspWorker […]
View Details刚进公司,不是很熟悉maven,总是访问不了项目,总是报404的错; 解决如下; 选中“项目", 然后右击选择“properties”—->Deployment Asssembly, 然后将webContent项remove掉,还有test相关的文件也可以remove掉, test是测试相关的文件, add一个folder文件,next-->next-->src下的main下的webapp文件,最后击“Finish”, 在add一个Java Build Path Entries,next—>Maven Dependencies文件,最后再点击"Finish"; 最后再点击"OK";重新启动tomcat,在浏览器中输入相应的地址:http://localhost:8080/MavenTest/index.jsp ,进行测试web项目是否创建成功。 //tomcat 没有jar问题
1 2 3 4 |
如果你是maven项目,tomcat在发布项目的时候没有同时发布maven依赖所添加的jar包, 你需要设置一下eclipse: 项目 —> 属性 -> Deployment Assembly -> Add -> Java Build Path Entries -> 选择Maven Dependencies -> Finish -> OK 把对应的Maven依赖包也发布到tomcat,调试时会自动把那些jar发布到指定目录下,tomcat也能找到那些jar了。 |
from:http://blog.csdn.net/my_name_nb/article/details/59112305
View DetailsMaven是当前流行的项目管理工具,但官方的库在国外经常连不上,连上也下载速度很慢。国内oschina的maven服务器很早之前就关了。今天发现阿里云的一个中央仓库,亲测可用。
1 2 3 4 5 6 |
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> |
修改${maven.home}/conf或者${user.home}/.m2文件夹下的settings.xml文件,在<mirrors>标签下加入上述内容即可。如下: <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <mirrors> <!--阿里云仓库--> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> <!--中央仓库1--> <mirror> <id>repo1</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo1.maven.org/maven2/</url> </mirror> <!--中央仓库2--> <mirror> <id>repo2</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo2.maven.org/maven2/</url> </mirror> </mirrors> </settings> from:http://www.cnblogs.com/xiongxx/p/6057558.html
View Details一、java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。例子如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package IO; import java.util.Random; public class TestRandom { public static void main(String[] args) { // 案例1 System.out.println("Math.random()=" + Math.random());// 结果是个double类型的值,区间为[0.0,1.0) int num = (int) (Math.random() * 3); // 注意不要写成(int)Math.random()*3,这个结果为0,因为先执行了强制转换 System.out.println("num=" + num); /** * 输出结果为: * * Math.random()=0.02909671613289655 * num=0 * */ } } |
二、java.util.Random 下面Random()的两种构造方法: Random():创建一个新的随机数生成器。 Random(long seed):使用单个 long 种子创建一个新的随机数生成器。 我们可以在构造Random对象的时候指定种子(这里指定种子有何作用,请接着往下看),如:Random r1 = new Random(20); 或者默认当前系统时间的毫秒数作为种子数:Random r1 = new Random(); 需要说明的是:你在创建一个Random对象的时候可以给定任意一个合法的种子数,种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系。如下面的Java代码:
1 2 3 |
Random rand =new Random(25); int i; i=rand.nextInt(100); |
初始化时25并没有起直接作用(注意:不是没有起作用),rand.nextInt(100);中的100是随机数的上限,产生的随机数为0-100的整数,不包括100。 具体用法如下例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
package IO; import java.util.ArrayList; import java.util.Random; public class TestRandom { public static void main(String[] args) { // 案例2 // 对于种子相同的Random对象,生成的随机数序列是一样的。 Random ran1 = new Random(10); System.out.println("使用种子为10的Random对象生成[0,10)内随机整数序列: "); for (int i = 0; i < 10; i++) { System.out.print(ran1.nextInt(10) + " "); } System.out.println(); Random ran2 = new Random(10); System.out.println("使用另一个种子为10的Random对象生成[0,10)内随机整数序列: "); for (int i = 0; i < 10; i++) { System.out.print(ran2.nextInt(10) + " "); } /** * 输出结果为: * * 使用种子为10的Random对象生成[0,10)内随机整数序列: * 3 0 3 0 6 6 7 8 1 4 * 使用另一个种子为10的Random对象生成[0,10)内随机整数序列: * 3 0 3 0 6 6 7 8 1 4 * */ // 案例3 // 在没带参数构造函数生成的Random对象的种子缺省是当前系统时间的毫秒数。 Random r3 = new Random(); System.out.println(); System.out.println("使用种子缺省是当前系统时间的毫秒数的Random对象生成[0,10)内随机整数序列"); for (int i = 0; i < 10; i++) { System.out.print(r3.nextInt(10)+" "); } /** * 输出结果为: * * 使用种子缺省是当前系统时间的毫秒数的Random对象生成[0,10)内随机整数序列 * 1 1 0 4 4 2 3 8 8 4 * */ // 另外,直接使用Random无法避免生成重复的数字,如果需要生成不重复的随机数序列,需要借助数组和集合类 ArrayList list=new TestRandom().getDiffNO(10); System.out.println(); System.out.println("产生的n个不同的随机数:"+list); } /** * 生成n个不同的随机数,且随机数区间为[0,10) * @param n * @return */ public ArrayList getDiffNO(int n){ // 生成 [0-n) 个不重复的随机数 // list 用来保存这些随机数 ArrayList list = new ArrayList(); Random rand = new Random(); boolean[] bool = new boolean[n]; int num = 0; for (int i = 0; i < n; i++) { do { // 如果产生的数相同继续循环 num = rand.nextInt(n); } while (bool[num]); bool[num] = true; list.add(num); } return list; } } |
备注:下面是Java.util.Random()方法摘要: protected int next(int bits):生成下一个伪随机数。 boolean nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。 void nextBytes(byte[] bytes):生成随机字节并将其置于用户提供的 byte 数组中。 double nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值。 float nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布float值。 double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0标准差是1.0。 int nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。 long nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 void setSeed(long seed):使用单个 long 种子设置此随机数生成器的种子。 下面给几个例子: 生成[0,1.0)区间的小数:double d1 = r.nextDouble(); 生成[0,5.0)区间的小数:double d2 = r.nextDouble() * 5; 生成[1,2.5)区间的小数:double d3 = r.nextDouble() * 1.5 + 1; 生成-231到231-1之间的整数:int n = r.nextInt(); 生成[0,10)区间的整数: int n2 = r.nextInt(10);//方法一 n2 = Math.abs(r.nextInt() % 10);//方法二 参考资料: http://blog.sina.com.cn/s/blog_93dc666c0101h3gd.html http://blog.csdn.net/wpjava/article/details/6004492
View Details一、在eclipse中创建maven-archetype-webapp项目: 1.新建项目选择maven项目 2.默认,下一步 3.选择maven-archetype-webapp,其他保持默认即可 4.如下填写完成后,点击完成即可 5.创建完成后的maven项目结构如下 其中index.jsp报错,错误信息:Multiple annotations found at this line: – The superclass "javax.servlet.http.HttpServlet" was not found on the Java 意思是缺少servlet包,我们可以导入javax.servlet-api-3.1.0.jar包,我们可以用两种方式来处理: 1> 在pom.xml中的dependencies中加入依赖包
1 2 3 4 5 |
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> |
2> 可以在build path中添加tomcat 库,如下 点击next出现下面界面,如下操作 至此,一个正常的maven web项目已经建好,如下: 二、配置springMVC 1.在pom.xml中添加对spring的依赖 pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>HelloSpringMVC</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>HelloSpringMVC Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>4.1.1.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> </dependencies> <build> <finalName>HelloSpringMVC</finalName> </build> </project> |
保存后会下载对应的jar文件 2.编辑web.xml文件 web.xml内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app> |
3.创建springContext.xml文件,在src/main/resources包中创建springContext.xml文件,如图: springContxt.xml内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 搜索spring控件 --> <context:component-scan base-package="com.test"></context:component-scan> <!-- 视图页面配置 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/views/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans> |
在springContext.xml中,base-package是指定spring控制器控件的包,前缀指定的是视图目录,被设置为/WEB-INF/views,即视图目录被放到WEB-INF下。后缀指定的是视图的扩展名。例如,"hellospring"视图,将被放到/WEB-INF/views/hellospring.jsp。 4. 创建Spring控制器和视图 创建HelloSpringController.java类,在src/main/java包中,如下图: HelloSpringController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package com.test; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; @Controller public class HelloSpringController { String message = "Welcome to Spring MVC!"; @RequestMapping("/hello") public ModelAndView showMessage(@RequestParam(value = "name", required = false, defaultValue = "Spring") String name) { ModelAndView mv = new ModelAndView("hellospring");//指定视图 //向视图中添加所要展示或使用的内容,将在页面中使用 mv.addObject("message", message); mv.addObject("name", name); return mv; } } |
在上面的代码中,@Controller注解为Spring标注前置控制器的方式,@RequestMapping注解映射web请求到具体要操作的类或者方法上面,@RequestMapping注解既可以用到类上,也可以用到方法上,在此不再详述,如有疑问,可以百度。@RequestParam注解为请求指定参数。这种方式提供了一个一致 的编程风格。 另外上述代码中ModelAndView类指定具体的视图,这里是"hellospring",由于我们在springContext.xml配置了视图的前后缀,所以在这里只需要写出视图的具体名称即可,其具体指定的就是:前缀+视图名称+后缀,即完整的视图路径/WEB-INF/views/hellospring.jsp,也就是所要展示的视图的位置。 项目首页index.jsp内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Spring 4 MVC - HelloWorld Index Page</title> </head> <body> <center> <h2>Hello World</h2> <h3> <a href="hello?name=zhangsan">点击跳转</a> </h3> </center> </body> </html> |
上述代码中,点击跳转 的链接其实就是我们HelloSpringController.java中定义的控制器的一个@RequestMapping注解方法,name=zhangsan为showMessage接受的参数。 在/WEB-INF/views/下创建hellospring.jsp视图,如图: hellospring.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Spring 4 MVC -HelloWorld</title> </head> <body> <center> <h2>Hello World</h2> <h2> ${message} ${name} </h2> </center> </body> </html> |
上述代码中显示我们在HelloSpringController.java的showMessage方法中添加的两个参数message和name,如图: 好,至此我们使用maven搭建springMVC的操作已经全部完成,完成后整个项目的结构如下图: 三、将项目部署到tomcat服务器运行 首页 http://localhost:8080/HelloSpringMVC/ ,其中也可以使用 http://localhost:8080/HelloSpringMVC/index.jsp 两个效果是一样的 点击跳转 页 注意:若是跳转后页面直接显示${message} ${name}说明jstl表达式不起作用,我们可以在pom.xml中添加如下依赖:
1 2 3 4 5 6 7 8 9 10 11 |
<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> |
from:http://www.cnblogs.com/qixing/p/qixing.html
View Detailssettings.xml存在于两个地方: 1.安装的地方:$M2_HOME/conf/settings.xml 2.用户的目录:${user.home}/.m2/settings.xml 前者又被叫做全局配置,后者被称为用户配置。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml优先。 如果你偶尔需要创建用户范围的settings,你可以简单的copy Maven安装路径下的settings到目录${user.home}/.m2。Maven默认的settings.xml是一个包含了注释和例子的模板,你可以快速的修改它来达到你的要求。 发现很多第三方的项目默认的setting配置都是用户目录/.m2/settings.xml 所以为了方便,需要自己创建.m2文件夹,并在其中配置settings.xml 网上的教程就是使用命令
1 |
mvn help:system |
使用之后,发现并没有生成.m2文件夹 查找很多之后发现,必须把默认的maven里面的本地存储设置为默认的,就是不要设置
1 |
<localRepository>D:\maven\repository</localRepository> |
这一行注释或取消掉,再执行mvn help:system命令就OK了。 http://www.cnblogs.com/yakov/archive/2011/11/26/maven2_settings.html
View Details一、使用yum命令搜索支持jdk版本
1 |
yum search java|grep jdk |
二、使用yum安装jdk8
1 |
yum install -y java-1.8.0-openjdk |
三、检查是否成功
1 |
java -version |
首先是下载,当然是官方网址 http://tomcat.apache.org/ 进入官网后了我们看到从tomcat6-tomcat9可供我们选择,因为tomcat9还是alpha版本,我们就选择最新的稳定版8.5.14.当然你也可以选择最常用的tomcat7.0.7. 具体的大家可以看这篇博客里面有各个版本的介绍tomcat版本介绍 选择完成之后我们就可以下载了。这里我给出两个版本的下载地址,如果大家需要其他版本的Tomcat可以自行去官网上面下载。
1 2 |
wget http://apache.fayea.com/tomcat/tomcat-8/v8.5.14/bin/apache-tomcat-8.5.14.tar.gz wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.77/bin/apache-tomcat-7.0.77.tar.gz |
下载完成后我们解压
1 |
tar -xvf apache-tomcat-8.5.14.tar.gz |
解压完毕之后我们进入tomcat目录下的bin文件,当然你也可以使用mv命令重命名文件夹,如果不太了解mv命令可以查看我的linux常用命令。 执行./catalina.sh 或者./startup.sh启动tomcat。 如果出现上图,并且在浏览器的8080端口中可以看到tomcat的猫就说明tomcat启动成功。 如果启动tomcat时,出现以以下错误说明jdk的环境变量没有配置。参考我的jdk安装指南配置。 如果tomcat 启动成功但是外网机访问不到请检查linux的防火墙是不是没有关闭,或者外网机是不是设置了代理。
1 |
--停止防火墙 |
1 2 |
systemctl stop firewalld service service iptables stop |
1 |
--永久关闭防火墙 |
1 2 |
systemctl disable firewalld service chkconfig iptables off |
怎么看tomcat服务是否启动成功呢,使用命令:
1 |
ps -ef | grep tomcat --查看正在运行的进程 |
如果看到tomcat的进程就说明tomcat启动成功了。如果没有出现就说明tomcat有问题。更换活着重新解压缩tomcat试试。 启动成功之后我们可以先看看在本机上是否可以访问。我们使用wget命令:
1 |
wget http://localhost:8080/ |
出现下图返回 200 ok 说明在本机上是没有问题的。 确认本机没有问题后,我们互相ping linux系统和windows系统的ip地址,看是否可以相互ping通,如果不能以相互ping通的话。请检查检查windows和linux服务器连接问题。比如防火墙,或者代理问题。 如果本机上也没有返回 200 就检查tomcat的配置文件,看他得端口号是不是默认的8080,如果端口号也没错的话还是看不见tomcat的猫的话可以留言和我讨论。
1 |
more conf/server.xml |
最后一点,如何设置tomcat开机自启动。将tomcat配置在 /etc/rc.local 下。
1 |
vim /etc/rc.local |
启动tomcat之前必须将java环境变量设置好。
1 2 3 |
JAVA_HOME=/usr/java/jdk1.8.0_91 export JAVA_HOME /usr/local/tomcat-8.5.14/bin/startup.sh |
重启reboot验证,tomcat 是否启动了,执行。
1 |
ps -ef | grep tomcat |
出现下图就说明tomcat已经启动了。 最后也就是见证奇迹的时刻,我们把我们的网站发布至/usr/local/tomcat-8.5.14/webapps/ROOT文件夹下; 我们就可以直接访问我们的网站了! from: http://www.cnblogs.com/Jxiaobai/p/6840480.html?utm_source=itdadao&utm_medium=referral
View Detailsvar result = "平年"; var year = DateTime.Now.Year; //不是整百年,且可以被4整除 if (year % 100 != 0 && year % 4 == 0) { result = "闰年"; } //能被400整除 if (year % 400 == 0) { result = "闰年"; } //对于数值很大的年份,这年如果能被3200整除,并且能被172800整除则是闰年 if (year > 3200 && year % 3200 == 0 && year % 172800 == 0) { result = "闰年"; }
View Details(PHP 4 >= 4.0.4, PHP 5, PHP 7) call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数 说明 mixed call_user_func_array ( callable $callback , array $param_arr ) 把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。 参数 callback 被调用的回调函数。 param_arr 要被传入回调函数的数组,这个数组得是索引数组。 返回值 返回回调函数的结果。如果出错的话就返回FALSE 更新日志 版本 说明 5.3.0 对面向对象里面的关键字的解析有所增强。在此之前,使用两个冒号来连接一个类和里面的一个方法,把它作为参数来作为回调函数的话,将会发出一个E_STRICT的警告,因为这个传入的参数被视为静态方法。 范例 Example #1 call_user_func_array()例子 <?php function foobar($arg, $arg2) { echo __FUNCTION__, " got $arg and $arg2\n"; } class foo { function bar($arg, $arg2) { echo __METHOD__, " got $arg and $arg2\n"; } } // Call the foobar() function with 2 arguments call_user_func_array("foobar", array("one", "two")); // Call the $foo->bar() method with 2 arguments $foo = new foo; call_user_func_array(array($foo, "bar"), array("three", "four")); ?> 以上例程的输出类似于:
1 2 |
foobar got one and two foo::bar got three and four |
Example #2 call_user_func_array()使用命名空间的情况 <?php namespace Foobar; class Foo { static public function test($name) { print "Hello {$name}!\n"; } } // As of PHP 5.3.0 call_user_func_array(__NAMESPACE__ .’\Foo::test', array('Hannes')); // As of PHP 5.3.0 call_user_func_array(array(__NAMESPACE__ .’\Foo', 'test'), array('Philip')); ?> 以上例程的输出类似于:
1 2 |
Hello Hannes! Hello Philip! |
Example #3 把完整的函数作为回调传入call_user_func_array() <?php $func = function($arg1, $arg2) { return $arg1 * $arg2; }; var_dump(call_user_func_array($func, array(2, 4))); /* As of PHP 5.3.0 */ ?> 以上例程会输出:
1 |
int(8) |
Example #4 传引用 <?php function mega(&$a){ […]
View Details