JSP 学习笔记

 

JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例--JSP页面有系统编译成Servlet,Servlet再负责响应用户请求。

1.JSP注释

<%--注释内容--%> ,与HTML注释<!--注释内容-->不同的是,编译后的HTML页面无法查看到JSP注释内容。

2.JSP声明

JSP声明用于声明变量和方法。JSP声明将会转换成Servlet中的成员变量或成员方法,因此,JSP声明依然符合Java语法。

格式: <%! 声明部分 %>

<%!

//声明一个整型变量

public int count;

//声明一个方法

public String info(){

return "hello world";

}

out.println(info());

%>

由于JSP声明语法定义的变量和方法对应于Servlet的成员变量和方法,所以JSP声明部分定义的变量和方法可以使用private,public等访问控制符修饰,也可以使用static修饰,将其变成类属性和类方法。但不能使用abstract修饰声明部分的方法,因为抽象方法将导致JSP对应的Servlet变成抽象类,从而导致无法实例化。

3.输出JSP表达式

语法格式:<%=表达式%>

<%!

public int count;

public String info(){

return "hello world";

}

%>

<!--使用表达式输出变量值-->

<%=count++%>

<!--使用表达式输出方法返回值-->

<%=info()%>

注意:输出表达式语法后不能有分号。

4.JSP脚本

通过JSP脚本代码来控制页面静态内容(HTML等元素)

<%

for(int i=0;i<10;i++){

%>

  <tr>

    <td><%=i%></td>

  </tr>

<%

}

%>

5.JSP的3个编译指令

JSP编译指令是通知JSP引擎的消息,它不直接生成输出。编译指令都有默认值。

page:该指令是针对当前页面的指令。

include:用于指定包含另一个页面。

taglib:用于定义和访问自定义标签。

语法格式:<%@ 编译指令名 属性名="属性值"...%>

5.1.page指令

page指令属性有:language,extends,import,session,buffer,autoFlush,info,errorPage,isErrorPage,contentType

<%@ page contentType="text/html" language="java" pageEncoding="UTF-8" %>

<% page import="java.sql.*"%>

5.2.include指令

使用include指令,可以将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句(如果有的话)。这是个静态的include语句,它会把目标页面的其他编译指令也包含进来,但动态include则不会。

include既可以包含静态的文本,也可以包含动态的JSP页面。静态的include编译指令会将被包含的页面加入本页面,融合成一个页面。

include指令语法:<%@include file="relativeURLSpec"%>

如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的include语句。

静态包含意义:包含页面在编译时将完全包含了被包含页面的代码。

6.JSP的 7个动作指令

动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令知识运行时的脚本动作。编译指令在将JSP编译成Servlet时起作用;而动作指令通常可替换成JSP脚本,是JSP脚本的标准化写法。

jsp:forward:执行页面转向,将请求的处理转发到下一个页面。

jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。

jsp:include:用于动态引入一个JSP页面。

jsp:plugin:用于下载JavaBean或Applet到客户端执行。

jsp:useBean:创建一个JavaBean的实例。

jsp:setProperty:设置JavaBean实例的属性值。

jsp:getProperty:输出JavaBean实例的属性值。

6.1.forward指令(跳转)

forward指令用于将页面响应转发给另外的页面。既可以转发给静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器的Servlet。

JSP的forward指令语法格式:

<jsp:forward page="relativeURL|<%=expression%>">

[<jsp:param.../>    <!-- 动态跳转传递的参数 -->

</jsp:forward>

请求参数的值可以通过HttpServletRequest类的getParameter()方法获取。

<jsp:forward page="forward-result.jsp">

<jsp:param name="age" value="29"/>

</jsp:forward>

相应的在forward-result.jsp页面可以通过request内置对象来获取age参数值。

<%=request.getParameter("age")%>

执行forward指令时,转发不是重定向,所以请求的地址没有发生改变,当然请求的参数也不会丢失。但页面内容却完全变为被forward目标页的内容。

6.2.include指令(包含)

include指令是一个动态include指令,也用于导入某个页面,它不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入本页面。

include动作指令的语法格式:

<jsp:include page="relativeURL|<%=expression%>" flush="true"/>

<jsp:include page="relativeURL|<%=expression%>" flush="true">

<jsp:param name="parameterName" value="patameterValue"/>  <!-- 包含传参 -->

</jsp:include>

flush属性用于指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中;如果指定为false,则包含在原文件中。例:<jsp:include page="scriptlet.jsp"/>

静态导入和动态导入区别:

a.静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet; 而动态导入则在Servlet中使用include方法来引入被导入页面的内容。

b.静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。

除此之外,执行Include动态指令时,还可以增加额外的请求参数。

实际上,forward动作指令和include动作指令很相似,它们采用方法来引入目标页面,通过查看JSP页面所生成Servlet代码可以得出:forward指令使用_jspx_page_context的forward()方法来引入目标页面,而include指令则使用通过JspRuntimeLibrary的include()方法来引入目标页面。区别在于,执行forward时,被forward的页面将完全代替原有页面;而执行include时,被include的页面只是引入原有页面。简而言之:forward拿目标页面代替原有页面,而include则拿目标页面插入原有页面。

6.3.useBean,setProperty,getProperty指令

这3个指令都是与JavaBean相关的指令,其中useBean指令用于在JSP页面中初始化一个Java实例;setProperty指令用于为JavaBean实例的属性设置值;getProperty指令用于输出JavaBean实例属性。

useBean语法格式:<jsp:useBean id="name" class="classname" scope="page|request|session|application" />

其中,id属性是JavaBean的实例名,class属性确定JavaBean的实现类。scope属性用于指定JavaBean实例的生存范围。

setProperty指令语法格式:<jsp:setProperty name="BeanName" property="propertyName" value="value"/>

getProperty指令语法格式:<jsp:getProperty name="BeanName" property="propertyName"/>

例:

<!-- 创建com.company.Person的实例,该实例的实例名位p1 -->

<jsp:useBean id="p1" class="com.company.Person" scope="page"/>

<!-- 设置p1的name属性值 -->

<jsp:setProperty name="p1" property="name"  value="zhangsan"/>

<jsp:setProperty name="p1" property="age" value="25"/>

<!-- 输出p1的name属性值-->

<jsp:getProperty name="p1" property name="name"/>

7.JSP脚本中的9个内置对象

application,config,exception,out,page,pageContext,request,response,session

application:javax.servlet.ServletContext的实例,该实例代表JSP所属的Web应用本身,可用于JSP页面,或者Servlet之间交换信息。常用方法:getAttribute,setAttribute,getInitParameter.

config:javax.servlet.ServletConfig的实例,该实例代表该JSP的配置信息。常用的方法有getInitParamter,getInitParameternames,事实上,JSP页面通常无需配置,也就不存在配置信息。因此,该对象更多地在Servlet中有效。

exception:Java.lang.Throwable的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page的isErrorPage属性为true时,该对象才可以使用。常用的方法有getMessage()和printStackTrace()等。

out:javax.servlet.jsp.JspWriter的实例,该实例代表JSP页面的输出流,用于输出内容,形成HTML页面。

page:代表页面本身,通常没有太大用处. 也就是Servlet中的this.

pageContext:javax.servlet.jsp.PageContext的实例,该对象代表该JSP页面上下文,使用该对象可以访问页面中的共享数据。常用方法有getServletContext()和getServletConfig()等。

request:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求。客户端的请求参数都被封装在该对象里。是个常用对象,获取客户端请求参数必须使用该对象。常用方法有getParameter,getParameterValues,setAttribute,getAttribute,setCharacterEncoding.

response:javax.servlet.http.HttpServletResponse的实例,代表服务器端对客户端的响应。通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应。而response对象常用于重定向,常用方法:getOutputStream(),sendRedirect.

session:javax.servlet.http.HttpSession的实例,该对象代表一次会话。常用方法:getAttribute,setAttribute.

8.JSTL JSP标准标签库

JSP的标签函数库主要分为五大类:

JSTL

前置名称

URI

范例

核心标签库

c

http://java.sun.com/jsp/jstl/core

<c:out>

I18N格式标签库

fmt

http://java.sun.com/jsp/jstl/fmt

<fmt:formatDate>

SQL标签库

sql

http://java.sun.com/jsp/jstl/sql

<sql:query>

XML标签库

Xml

http://java.sun.com/jsp/jstl/xml

<x:forEach>

函数标签库

fn

http://java.sun.com/jsp/jstl/functions

<fn:split>

核心标签库

功能分类

标签名称

表达式操作

out、set、remove、catch

流程控制

if、choose、when、otherwise

迭代操作

forEach、forTokens

URL操作

import、param、url、redirect

使用:

将标签库中所有的.jar包(内部是所有的标签处理器)放到/WEB_INF/lib下,

将所有的.tld(内部是所有的标签库描述)放到/WEB-INF/tlds下

<%@ page contentType="text/html;charset=gbk" language="java"%>

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

<c:out value="${param.name}" default="welecome jgl to my website!"/>

9.EL表达式

${sessionScope.user.sex}

所有EL都是以${为起始、以}为结尾的。

EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:

${sessionScope.user.sex}等于${sessionScope.user["sex"]}

. 和 [ ] 也可以同时混合使用,如下:

${sessionScope.shoppingCart[0].price}

JSP 学习笔记

 

JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例--JSP页面有系统编译成Servlet,Servlet再负责响应用户请求。

1.JSP注释

<%--注释内容--%> ,与HTML注释<!--注释内容-->不同的是,编译后的HTML页面无法查看到JSP注释内容。

2.JSP声明

JSP声明用于声明变量和方法。JSP声明将会转换成Servlet中的成员变量或成员方法,因此,JSP声明依然符合Java语法。

格式: <%! 声明部分 %>

<%!

//声明一个整型变量

public int count;

//声明一个方法

public String info(){

return "hello world";

}

out.println(info());

%>

由于JSP声明语法定义的变量和方法对应于Servlet的成员变量和方法,所以JSP声明部分定义的变量和方法可以使用private,public等访问控制符修饰,也可以使用static修饰,将其变成类属性和类方法。但不能使用abstract修饰声明部分的方法,因为抽象方法将导致JSP对应的Servlet变成抽象类,从而导致无法实例化。

3.输出JSP表达式

语法格式:<%=表达式%>

<%!

public int count;

public String info(){

return "hello world";

}

%>

<!--使用表达式输出变量值-->

<%=count++%>

<!--使用表达式输出方法返回值-->

<%=info()%>

注意:输出表达式语法后不能有分号。

4.JSP脚本

通过JSP脚本代码来控制页面静态内容(HTML等元素)

<%

for(int i=0;i<10;i++){

%>

<tr><td><%=i%></td></tr>

<%}%>

5.JSP的3个编译指令

JSP编译指令是通知JSP引擎的消息,它不直接生成输出。编译指令都有默认值。

page:该指令是针对当前页面的指令。

include:用于指定包含另一个页面。

taglib:用于定义和访问自定义标签。

语法格式:<%@ 编译指令名 属性名="属性值"...%>

5.1.page指令

page指令属性有:language,extends,import,session,buffer,autoFlush,info,errorPage,isErrorPage,contentType

<%@ page contentType="text/html; charset=gb2312" language="java" %>

<% page import="java.sql.*"%>

5.2.include指令

使用include指令,可以将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句(如果有的话)。这是个静态的include语句,它会把目标页面的其他编译指令也包含进来,但动态include则不会。

include既可以包含静态的文本,也可以包含动态的JSP页面。静态的include编译指令会将被包含的页面加入本页面,融合成一个页面。

include指令语法:<%@include file="relativeURLSpec"%>

如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的include语句。

静态包含意义:包含页面在编译时将完全包含了被包含页面的代码。

6.JSP的 7个动作指令

动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令知识运行时的脚本动作。编译指令在将JSP编译成Servlet时起作用;而动作指令通常可替换成JSP脚本,是JSP脚本的标准化写法。

jsp:forward:执行页面转向,将请求的处理转发到下一个页面。

jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。

jsp:include:用于动态引入一个JSP页面。

jsp:plugin:用于下载JavaBean或Applet到客户端执行。

jsp:useBean:创建一个JavaBean的实例。

jsp:setProperty:设置JavaBean实例的属性值。

jsp:getProperty:输出JavaBean实例的属性值。

6.1.forward指令

forward指令用于将页面响应转发给另外的页面。既可以转发给静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器的Servlet。

JSP的forward指令语法格式:

<jsp:forward page="{relativeURL|<%=expression%>}">

{<jsp:param.../>}

</jsp:forward>

请求参数的值可以通过HttpServletRequest类的getParameter()方法获取。

<jsp:forward page="forward-result.jsp">

<jsp:param name="age" value="29"/>

</jsp:forward>

相应的在forward-result.jsp页面可以通过request内置对象来获取age参数值。

<%=request.getParameter("age")%>

执行forward指令时,转发不是重定向,所以请求的地址没有发生改变,当然请求的参数也不会丢失。但页面内容却完全变为被forward目标页的内容。

6.2.include指令

include指令是一个动态include指令,也用于导入某个页面,它不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入本页面。

include动作指令的语法格式:

<jsp:include page="{relativeURL|<%=expression%>}" flush="true"/>

<jsp:include page="{relativeURL|<%=expression%>}" flush="true">

<jsp:param name="parameterName" value="patameterValue"/>

</jsp:include>

flush属性用于指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中;如果指定为false,则包含在原文件中。例:<jsp:include page="scriptlet.jsp"/>

静态导入和动态导入区别:

a.静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet; 而动态导入则在Servlet中使用include方法来引入被导入页面的内容。

b.静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。

除此之外,执行Include动态指令时,还可以增加额外的请求参数。

实际上,forward动作指令和include动作指令很相似,它们采用方法来引入目标页面,通过查看JSP页面所生成Servlet代码可以得出:forward指令使用_jspx_page_context的forward()方法来引入目标页面,而include指令则使用通过JspRuntimeLibrary的include()方法来引入目标页面。区别在于,执行forward时,被forward的页面将完全代替原有页面;而执行include时,被include的页面只是引入原有页面。简而言之:forward拿目标页面代替原有页面,而include则拿目标页面插入原有页面。

6.3.useBean,setProperty,getProperty指令

这3个指令都是与JavaBean相关的指令,其中useBean指令用于在JSP页面中初始化一个Java实例;setProperty指令用于为JavaBean实例的属性设置值;getProperty指令用于输出JavaBean实例属性。

useBean语法格式:<jsp:useBean id="name" class="classname" scope="page|request|session|application" />

其中,id属性是JavaBean的实例名,class属性确定JavaBean的实现类。scope属性用于指定JavaBean实例的生存范围。

setProperty指令语法格式:<jsp:setProperty name="BeanName" property="propertyName" value="value"/>

getProperty指令语法格式:<jsp:getProperty name="BeanName" property="propertyName"/>

例:

<!-- 创建com.company.Person的实例,该实例的实例名位p1 -->

<jsp:useBean id="p1" class="com.company.Person" scope="page"/>

<!-- 设置p1的name属性值 -->

<jsp:setProperty name="p1" property="name"  value="zhangsan"/>

<jsp:setProperty name="p1" property="age" value="25"/>

<!-- 输出p1的name属性值-->

<jsp:getProperty name="p1" property name="name"/>

7.JSP脚本中的9个内置对象

application,config,exception,out,page,pageContext,request,response,session

application:javax.servlet.ServletContext的实例,该实例代表JSP所属的Web应用本身,可用于JSP页面,或者Servlet之间交换信息。常用方法:getAttribute,setAttribute,getInitParameter.

config:javax.servlet.ServletConfig的实例,该实例代表该JSP的配置信息。常用的方法有getInitParamter,getInitParameternames,事实上,JSP页面通常无需配置,也就不存在配置信息。因此,该对象更多地在Servlet中有效。

exception:Java.lang.Throwable的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page的isErrorPage属性为true时,该对象才可以使用。常用的方法有getMessage()和printStackTrace()等。

out:javax.servlet.jsp.JspWriter的实例,该实例代表JSP页面的输出流,用于输出内容,形成HTML页面。

page:代表页面本身,通常没有太大用处. 也就是Servlet中的this.

pageContext:javax.servlet.jsp.PageContext的实例,该对象代表该JSP页面上下文,使用该对象可以访问页面中的共享数据。常用方法有getServletContext()和getServletConfig()等。

request:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求。客户端的请求参数都被封装在该对象里。是个常用对象,获取客户端请求参数必须使用该对象。常用方法有getParameter,getParameterValues,setAttribute,getAttribute,setCharacterEncoding.

response:javax.servlet.http.HttpServletResponse的实例,代表服务器端对客户端的响应。通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应。而response对象常用于重定向,常用方法:getOutputStream(),sendRedirect.

session:javax.servlet.http.HttpSession的实例,该对象代表一次会话。常用方法:getAttribute,setAttribute.

8.JSTL JSP标准标签库

JSP的标签函数库主要分为五大类:

JSTL

前置名称

URI

范例

核心标签库

c

http://java.sun.com/jsp/jstl/core

<c:out>

I18N格式标签库

fmt

http://java.sun.com/jsp/jstl/fmt

<fmt:formatDate>

SQL标签库

sql

http://java.sun.com/jsp/jstl/sql

<sql:query>

XML标签库

Xml

http://java.sun.com/jsp/jstl/xml

<x:forEach>

函数标签库

fn

http://java.sun.com/jsp/jstl/functions

<fn:split>

核心标签库

功能分类

标签名称

表达式操作

out、set、remove、catch

流程控制

if、choose、when、otherwise

迭代操作

forEach、forTokens

URL操作

import、param、url、redirect

使用:

将标签库中所有的.jar包(内部是所有的标签处理器)放到/WEB_INF/lib下,

将所有的.tld(内部是所有的标签库描述)放到/WEB-INF/tlds下

<%@ page contentType="text/html;charset=gbk" language="java"%>

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

<c:out value="${param.name}" default="welecome jgl to my website!"/>

9.EL表达式

${sessionScope.user.sex}

所有EL都是以${为起始、以}为结尾的。

EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:

${sessionScope.user.sex}等于${sessionScope.user["sex"]}

. 和 [ ] 也可以同时混合使用,如下:

${sessionScope.shoppingCart[0].price}

JSP 学习笔记1的更多相关文章

  1. JSP学习笔记

    JSP学习笔记 Jsp网页主要分为Elements与Template Data两部分. Template Data:JSP Container不处理的部分,例如HTML内容 Elements:必须经由 ...

  2. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  3. java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象

     JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...

  4. jsp学习笔记:mvc开发模式

    jsp学习笔记:mvc开发模式2017-10-12 22:17:33 model(javabe)与view层交互 view(视图层,html.jsp) controller(控制层,处理用户提交的信息 ...

  5. JSP学习笔记2

    <JAVA遇见HTML——JSP篇>学习笔记(下) 1.Javabean Javabeans就是符合某种规范的java类,使用Javabeans的好处是[解决代码的重复编写],减少代码冗余 ...

  6. (转) jsp学习笔记

    fromhttp://www.cnblogs.com/tao975/p/4445070.html 什么是JSP JSP的优势 JSP的劣势 JSP与PHP的比较 JSP工作原理 JSP的九大内置对象 ...

  7. 重温JSP学习笔记--三大指令九大内置对象

    最近在温习javaweb的相关基础知识,鉴于我弄丢了记满了整整一本的笔记,决定以后把笔记和一些学习上的心得以及碰到的一些问题统统都放在网上,今天看了一下jsp的相关基础,以下是笔记: JSP三大指令: ...

  8. 重温JSP学习笔记--与日期数字格式化有关的jstl标签库

    上一篇笔记写的主要是JSTL的core标签库,如果想对一些数字或者日期做一些操作或者在网页上显示指定格式的数字或日期,jstl还提供了另一个fmt标签库,这里简单介绍一下: 第一步,导入标签库: &l ...

  9. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

随机推荐

  1. <每日一题> Day8:CodeForces-996A.Hit the Lottery(贪心)

    原题链接 因为数据太水,我直接一发暴力过了...... #include <cstdio> using namespace std; ] = {, , , , }; int main() ...

  2. [2019杭电多校第五场][hdu6630]permutation 2

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6630 题意为求出1-n,n个数的全排列中有多少种方案满足第一位为x,第n位为y,且相邻数字绝对值之差不 ...

  3. Trie字典树详解

    今天上午省选字符串......只会KMP.连hash都不会的我被大佬虐惨了......于是我要发奋图强学习字符串,学习字符串当然就要从Trie树这种可爱的数据结构开始啦!!! 一.什么是Trie树?? ...

  4. [Java] 歐付寶金流串接教學

    前言: 很多接案的人,都會碰到需要接金流的時候.而歐付寶是個台灣的金流平台. 這邊記錄下,串接的心得.我用的語言是Java, 採liferay這個portal平台,不過這份教學當然適合servlet. ...

  5. 分布式唯一ID生成器

    在应用程序中,经常需要全局唯一的ID作为数据库主键.如何生成全局唯一ID? 首先,需要确定全局唯一ID是整型还是字符串?如果是字符串,那么现有的UUID就完全满足需求,不需要额外的工作.缺点是字符串作 ...

  6. AngularJS语法

    1,$scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带. $scope是一个对象,有可用的方法和属性. $scope可应用在视图和控制器上.2,所有的 ...

  7. 从excel表中生成批量SQL

    excel表格中有许多数据,需要将数据导入数据库中,又不能一个一个手工录入,可以生成SQL,来批量操作.   ="insert into Log_loginUser (LogID, Logi ...

  8. SwiftUI 实战:从 0 到 1 研发一个 App

    心得感悟 起初看到 WWDC 上的演示 SwiftUI 时,我就觉得 SwiftUI 有种陌生的熟悉感(声明式语法),所以体验下,看看有没有什么启发. 先说下整体项目完成下来的感受: 用 Swift ...

  9. 如何启用Nginx的status功能,查看服务器状态信息?

    如何查看服务器状态信息? 我们可以通过安装Nginx的功能模块,并修改Nginx的主配置文件来实现. 1.编译安装时使用--with-http_stub_status_module开启状态页面模块 [ ...

  10. Python PostgreSQL Psycopg2

    [转] http://daigong.iteye.com/blog/901160 Python如果要操作Postgresql,需要一个API,这就需要Psycopg2 1. 链接PostgreSQL并 ...