JSPServlet精华笔记
一、 JSP (Java Server Pages)
JSP是指:
▶ 在HTML中嵌入Java脚本代码
▶ 由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码
▶ 然后将生成的整个页面信息返回给客户端
二、 JSP工作原理(执行流程)
Web容器处理JSP文件请求需要经过3个阶段:
▶ 翻译阶段(转译阶段)
.jsp → .java
▶ 编译阶段
.java → .class
▶ 执行阶段(运行)
运行.class
| 
 注意:第一次请求之后,Web容器可以重用已经编译好的字节码文件。所以,第一次会比较慢。  | 
三、 JSP中的元素
▶ 静态内容
HTML内容
▶ 指令
以“<%@ ” 开始,以“%> ” 结束。
比如:<%@ include file = " Filename" %>
▶ 表达式
<%=Java表达式 %>
注意:表达式后不要加分号。
相当于out. print(表达式);
▶ Java脚本 (Java Scriptlet)
<% Java 代码 %>
▶ 声 明
<%! 方法 %>
<%! 变量 %>
▶ 注释
<!-- 这是注释,但客户端可以查看到 --> HTML、XML注释
<%-- 这也是注释,但客户端不能查看到 --%> JSP注释
四、 指令
| 
 语法:<%@ 指令名 属性n="属性值n"%>  | 
常用的指令
▶ <%@ page %>
▶ <%@ include %>
▶ <%@ taglib %>
4.1. page指令
▶ 通过设置内部的多个属性来定义整个页面的属性
▶ 可以使用多次
▶ 一般JSP页面中,第一行就是page指令
▶ page指令常用属性

4.2. Java脚本(Scriptlet)
语法 :<% Java代码 %>
写在Java脚本中的代码,事实上,都是在JSP转译成.java后的同一个方法(_jspService())中的代码。
请思考:内置对象从哪来的?
4.3. 声明
语法 :<%! 变量或方法%>
注意:声明中不可以使用内置对象,请说明和记住原因。
五、 九大内置对象
在JSP的脚本中,可以直接使用的对象。
▶ PageContext pageContext ;
▶ HttpSession session ;
▶ ServletContext application ;
▶ ServletConfig config ;
▶ JspWriter out ;
▶ Object page;
▶ HttpServletRequest request;
▶ HttpServletResponse response
▶ Throwable exception 只有isErrorPage=”true”的页面才拥有
5.1 request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
    方法摘要:
- object getAttribute(String name) //返回指定属性的属性值
 - Enumeration getAttributeNames() //返回所有可用属性名的枚举
 - String getCharacterEncoding() // 返回字符编码方式
 - int getContentLength() //返回请求体的长度(以字节数)
 - String getContentType() // 得到请求体的MIME类型
 - ServletInputStream getInputStream() //得到请求体中一行的二进制流
 - String getParameter(String name) //返回name指定参数的参数值
 - Enumeration getParameterNames() //返回可用参数名的枚举
 - String[] getParameterValues(String name) //返回包含参数name的所有值的数组
 - String getProtocol() // 返回请求用的协议类型及版本号
 - String getScheme() //返回请求用的计划名,如:http.https及ftp等
 - String getServerName() //返回接受请求的服务器主机名
 - int getServerPort() //返回服务器接受此请求所用的端口号
 - BufferedReader getReader() //返回解码过了的请求体
 - String getRemoteAddr() //返回发送此请求的客户端IP地址
 - String getRemoteHost() //返回发送此请求的客户端主机名
 - void setAttribute(String key,Object obj) //设置属性的属性值
 - String getRealPath(String path) //返回一虚拟路径的真实路径
 
5.2 response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
    方法摘要:
- String getCharacterEncoding() //返回响应用的是何种字符编码
 - ServletOutputStream getOutputStream() //返回响应的一个二进制输出流
 - PrintWriter getWriter() // 返回可以向客户端输出字符的一个对象
 - void setContentLength(int len) //设置响应头长度
 - void setContentType(String type) //设置响应的MIME类型
 - sendRedirect(java.lang.String location) //重新定向客户端的请求
 
重定向和转发
- response.sendRedirect("main.jsp");//重定向
 - request.getRequestDispatcher("main.jsp").forward(request,response); //转发
 
重定向:
又称为客户端跳转
1、 请求会丢失
2、 地址会改变
转发:
又称为服务端跳转。
1、 请求不会丢失
2、 地址栏不改变
- 转发是在服务器端发挥作用,通过forward方法将提交信息在多个页面间进行传递。
 - 转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址
 - 重定向是在客户端发挥作用,通过请求新的地址实现页面转向
 - 重定向是通过浏览器重新请求地址,在地址栏中可以显示转向后的地址
 
关于路径:
- 重定向:basePath+完整路径
 - 转发:/+完整径
 
5.3 session对象
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,
    直到客户端与服务器断开连接为止。它是HttpSession类的实例.
    方法摘要:
- long getCreationTime() //返回SESSION创建时间
 - public String getId() // 返回SESSION创建时JSP引擎为它设的惟一ID号
 - long getLastAccessedTime() // 返回此SESSION里客户端最近一次请求时间
 - int getMaxInactiveInterval() //返回两次请求间隔多长时间此SESSION被取消(ms)
 - String[] getValueNames() //返回一个包含此SESSION中所有可用属性的数组
 - void invalidate() // 取消SESSION,使SESSION不可用
 - boolean isNew() // 返回服务器创建的一个SESSION,客户端是否已经加入
 - void removeValue(String name) //删除SESSION中指定的属性
 - void setMaxInactiveInterval() //设置两次请求间隔多长时间此SESSION被取消(ms)
 
5.4 out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
    方法摘要:
- void clear() // 清除缓冲区的内容
 - void clearBuffer() //清除缓冲区的当前内容
 - void flush() // 清空流
 - int getBufferSize() //返回缓冲区以字节数的大小,如不设缓冲区则为0
 - int getRemaining() //返回缓冲区还剩余多少可用
 - boolean isAutoFlush() //返回缓冲区满时,是自动清空还是抛出异常
 - void close() //关闭输出流
 
5.5 page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
    方法摘要:
- class getClass //返回此Object的类
 - int hashCode() //返回此Object的hash码
 - boolean equals(Object obj) //判断此Object是否与指定的Object对象相等
 - void copy(Object obj) // 把此Object拷贝到指定的Object对象中
 - Object clone() // 克隆此Object对象
 - String toString() //把此Object对象转换成String类的对象
 - void notify() //唤醒一个等待的线程
 - void notifyAll() // 唤醒所有等待的线程
 - void wait(int timeout) //使一个线程处于等待直到timeout结束或被唤醒
 - void wait() // 使一个线程处于等待直到被唤醒
 - void enterMonitor() //对Object加锁
 - void exitMonitor() //对Object开锁
 
5.6 application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,
    在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,
    以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。
    服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
    方法摘要:
- Object getAttribute(String name) //返回给定名的属性值
 - Enumeration getAttributeNames() //返回所有可用属性名的枚举
 - void setAttribute(String name,Object obj) //设定属性的属性值
 - void removeAttribute(String name) //删除一属性及其属性值
 - String getServerInfo() //返回JSP(SERVLET)引擎名及版本号
 - String getRealPath(String path) //返回一虚拟路径的真实路径
 - ServletContext getContext(String uripath) //返回指定WebApplication的application对象
 - int getMajorVersion() //返回服务器支持的Servlet API的最大版本号
 - int getMinorVersion() //返回服务器支持的Servlet API的最大版本号
 - String getMimeType(String file) //返回指定文件的MIME类型
 - URL getResource(String path) //返回指定资源(文件及目录)的URL路径
 - InputStream getResourceAsStream(String path) //返回指定资源的输入流
 - RequestDispatcher getRequestDispatcher(String uripath) //返回指定资源的RequestDispatcher对象
 - Servlet getServlet(String name) //返回指定名的Servlet
 - Enumeration getServlets() //返回所有Servlet的枚举
 - Enumeration getServletNames() //返回所有Servlet名的枚举
 - void log(String msg) // 把指定消息写入Servlet的日志文件
 - void log(Exception exception,String msg) // 把指定异常的栈轨迹及错误消息写入Servlet的日志文件
 - void log(String msg,Throwable throwable) // 把栈轨迹及给出的Throwable异常的说明信息 写入Servlet的日志文件
 
5.7 exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。
    如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
    方法摘要:
- String getMessage() //返回描述异常的消息
 - String toString() //返回关于异常的简短描述消息
 - void printStackTrace() //显示异常及其栈轨迹
 - Throwable FillInStackTrace() //重写异常的执行栈轨迹
 
5.8 pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,
    也就是说他可以访问到本页所在的SESSION,
    也可以取本页面所在的application的某一属性值,
    他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
    方法摘要:
- JspWriter getOut() //返回当前客户端响应被使用的JspWriter流(out)
 - HttpSession getSession() //返回当前页中的HttpSession对象(session)
 - Object getPage() //返回当前页的Object对象(page)
 - ServletRequest getRequest() //返回当前页的ServletRequest对象(request)
 - ServletResponse getResponse() //返回当前页的ServletResponse对象(response)
 - Exception getException() //返回当前页的Exception对象(exception)
 - ServletConfig getServletConfig() //返回当前页的ServletConfig对象(config)
 - ServletContext getServletContext() //返回当前页的ServletContext对象(application)
 - void setAttribute(String name,Object attribute) //设置属性及属性值
 - void setAttribute(String name,Object obj,int scope) //在指定范围内设置属性及属性值
 - public Object getAttribute(String name) //取属性的值
 - Object getAttribute(String name,int scope) //在指定范围内取属性的值
 - public Object findAttribute(String name) //寻找一属性,返回起属性值或NULL
 - void removeAttribute(String name) //删除某属性
 - void removeAttribute(String name,int scope) // 在指定范围删除某属性
 - int getAttributeScope(String name) //返回某属性的作用范围
 - Enumeration getAttributeNamesInScope(int scope) //返回指定范围内可用的属性名枚举
 - void release() //释放pageContext所占用的资源
 - void forward(String relativeUrlPath) //使当前页面重导到另一页面
 - void include(String relativeUrlPath) //在当前位置包含另一文件
 
5.9 config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,
    此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)
    以及服务器的有关信息(通过传递一个ServletContext对象)
    方法摘要:
- ServletContext getServletContext() //返回含有服务器相关信息的ServletContext对象
 - String getInitParameter(String name) // 返回初始化参数的值
 - Enumeration getInitParameterNames() //返回Servlet初始化所需所有参数的枚举
 
六、JSP状态管理(会话跟踪)
1. Cookie
Cookie是Web服务器保存在客户端的一系列文本信息。
Cookie的作用
- 对特定对象的追踪
 - 统计网页浏览次数
 - 简化登录
 
安全性能
容易信息泄露
常见的方法
- String getComment() //返回cookie中注释,假如没有注释的话将返回空值.
 - String getDomain() //返回cookie中Cookie实用的域名. 应用getDomain() 方法可以唆使浏览器把Cookie返回给同 一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完整雷同的服务器。留心域名必须以点开端
 - int getMaxAge() //返回Cookie过期之前的最大时间,以秒盘算。
 - String getName() //返回Cookie的名字
 - String getPath() //返回Cookie实用的路径。假如不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。
 - boolean getSecure() //假如浏览器通过安全协议发送cookies将返回true值,假如浏览器应用标准协议则返回false值。
 - String getValue() //返回Cookie的值。笔者也将在后面具体先容getValue/setValue。
 - int getVersion() //返回Cookie所屈服的协议版本。
 - void setComment(String purpose) //设置cookie中注释
 - void setDomain(String pattern) //设置cookie中Cookie实用的域名
 - void setMaxAge(int expiry) //以秒盘算,设置Cookie过期时间。
 - void setPath(String uri) //指定Cookie实用的路径。
 - void setSecure(boolean flag) //指出浏览器应用的安全协议,例如HTTPS或SSL。
 - void setValue(String newValue) //cookie创立后设置一个新的值。
 - void setVersion(int v) //设置Cookie所屈服的协议版本
 
- //获取客户端发送所有的Cookie
 - <%
 - //获取客户端发送所有的Cookie
 - Cookie[] cookies = request.getCookies();
 - if (null != cookies) {
 - %>
 - <table width="600" border="1">
 - <tr>
 - <td>
 - 名称
 - </td>
 - <td>
 - 值
 - </td>
 - <td>
 - 有效时长
 - </td>
 - </tr>
 - <%
 - for (Cookie cookie : cookies) {
 - %>
 - <tr>
 - <td>
 - <%=cookie.getName()%>
 - </td>
 - <td>
 - <%=cookie.getValue()%>
 - </td>
 - <td>
 - <%=cookie.getMaxAge()%>
 - </td>
 - </tr>
 - <%
 - }
 - //创建Cookie
 - Cookie nameCookie = new Cookie("username", "accp");
 - Cookie pwdCookie = new Cookie("password", "123");
 - //设置有效时长(秒)
 - nameCookie.setMaxAge(60);
 - pwdCookie.setMaxAge(60);
 - //向客户端手动写入Cookie
 - response.addCookie(nameCookie);
 - response.addCookie(pwdCookie);
 - %>
 
2.session(会话)
会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程 。
常用方法
- getId //此方法返回唯一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当作键名用。
 - GetCreationTime //返回session被创建的时间。最小单位为千分之一秒。为得到一个对打印输出很有用的值,可将此值传给Date constructor 或者GregorianCalendar的方法setTimeInMillis.
 - GetLastAccessedTime //返回session最后被客户发送的时间。最小单位为千分之一秒。
 - GetMaxInactiveInterval //返回总时间(秒),负值表示session永远不会超时。
 - //getAttribute 取一个session相联系的信息。(在jsp1.0中为 getValue)
 - Integer item = (Integer) session.getAttribute("item") //检索出session的值并转化为整型
 - //setAttribute 提供一个关键词和一个值。会替换掉任何以前的值。(在jsp1.0中为putValue)
 - session.setAttribute("ItemValue", itemName); // ItemValue 必须不是must简单类型
 
七、 JavaBean
符合规范的Java类都是JavaBean
JavaBean的分类
- 封装数据
 
- 按照OO原则,属性与数据库表字段相对应
 - 属性私有
 - public的无参的构造方法
 - 具有public的set/get方法
 
- 封装业务
 
- 具有实现特定功能的方法和方法实现
 - 通常与一个封装数据的JavaBean对应
 
优势
- 解决代码重复编写,减少代码冗余
 - 功能区分明确,避免业务逻辑处理与页面显示处理集中在一起造成混乱
 - 提高了代码的维护性
 
八、 Tomcat配置连接池
1、 将驱动jar包拷贝到%TOMCAT_HOME%\lib目录下
2、 打开%TOMCAT_HOME%\conf\context.xml文件,在<Context>元素下配置:
- <Resource name="jdbc/books"
 - auth="Container"type="javax.sql.DataSource" maxActive="100"
 - maxIdle="30" maxWait="10000" username="scott" password="tiger"
 - driverClassName="oracle.jdbc.OracleDriver"
 - url="jdbc:oracle:thin:@192.168.3.80:1521:accp"/>
 
3、 在web.xml中配置(可选)
- <resource-ref>
 - <res-ref-name> jdbc/ pro</res-ref-name>
 - <res-type> javax.sql.DataSource </res-type>
 - <res-auth> Container </res-auth>
 - </resource-ref>
 
4、 通过JNDI获取数据源,并从数据源得到连接
- Context ic = new InitialContext();
 - DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/news");
 - Connection connection = source.getConnection();
 
九、 Serlvet基础
Servlet 是一个 Java程序,是在服务器上运行以处理客户端请求并做出响应的程序。
必须实现Servlet接口。
13.1. Servlet的生命周期

1、 客户端发出HTTP请求,默认情况下,当第一次请求Servlet时,容器创建Servlet实例。否则进入第3步。
2、 调用Servlet的init()方法进行初始化。
3、 调用Servlet的service()方法处理请求和响应。
4、 然后Servlet常驻内存,等待下一次调用。
5、 应用程序停止,调用Servlet的destroy()释放占用的资源。
注意:在整个应用程序的生命周期中,Servlet的实例只有一个。它以多线程的方式进行服务。
记住JSP与Servlet的生命周期及区别
13.2. Servlet的体系结构

HttpServlet中的doGet()和doPost()由service()方法根据提交请求的方式(GET/POST)来调用。默认为GET
13.3. 常用API
ServeltConfig接口
- 在Servlet初始化过程中获取配置信息
 - 一个Servlet只有一个ServletConfig对象
 
ServeltConfig接口的常用方法
| 
 方法名称  | 
 功能描述  | 
| 
 String getInitParameter(String name)  | 
 获取web.xml中设置的以name命名的初始化参数值  | 
| 
 ServletContext getServletContext()  | 
 返回Servlet的上下文对象引用  | 
ServeltConText接口
- 获取Servlet上下文
 - 即JSP中的application内置对象
 
ServeltConText接口的常用方法
| 
 方法名称  | 
 功能描述  | 
| 
 ServletContext getContext(String path)  | 
 返回服务器上与指定URL相对应的ServletContext对象  | 
| 
 void setAttribute(String name,Object obj)  | 
 设置Servlet中的共享属性  | 
| 
 Object getAttribute(String name)  | 
 获取Servlet中设置的共享属性  | 
GenericServlet抽象类
- 提供了Servlet与ServletConfig接口的默认实现方法
 - HttpServlet继承于GenericServlet
 - 处理HTTP协议的请求和响应
 
13.4. Servlet的配置
- <!-- 注册Servlet -->
 - <servlet>
 - <servlet-name>servlet03</servlet-name>
 - <servlet-class>com.accp.jspservlet.servlet.Servlet03</servlet-class>
 - </servlet>
 - <!-- 映射 -->
 - <servlet-mapping>
 - <servlet-name>servlet03</servlet-name>
 - <url-pattern>/servlet03</url-pattern>
 - </servlet-mapping>
 
13.5. 初始化参数
- <servlet>
 - <description>读取初始化参数</description>
 - <servlet-name>InitParamServlet</servlet-name> <servlet-class>com.accp.jspservlet.servlet.InitParamServlet</servlet-class>
 - <!-- 初始化参数,可以配置多个,只有该Servlet能够读取 -->
 - <init-param>
 - <param-name>encoding</param-name>
 - <param-value>UTF-8</param-value>
 - </init-param>
 - </servlet>
 
读取:
- //获取所有的初始化参数的名称
 - Enumeration<String> paramNames = config.getInitParameterNames();
 - while(paramNames.hasMoreElements()){
 - String paramName = paramNames.nextElement();
 - String paramValue = config.getInitParameter(paramName);
 - System.out.println(paramName+"="+paramValue);
 - }
 
13.6. Servlet上下文参数
- <!-- Servlet上下文(ServletContext)参数 -->
 - <context-param>
 - <param-name>hello</param-name>
 - <param-value>world</param-value>
 - </context-param>
 
读取:
- Enumeration<String> paramNames = context.getInitParameterNames();
 - System.out.println("Servlet上下文参数,所有的Servlet都可以访问");
 - while(paramNames.hasMoreElements()){
 - String paramName = paramNames.nextElement();
 - String paramValue = context.getInitParameter(paramName);
 - System.out.println(paramName+"="+paramValue);
 - }
 
JSPServlet精华笔记的更多相关文章
- TCP/IP协议精华笔记
		
1.简介 TCP/IP协议并非单指TCP协议.IP协议,它是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议.ICMP(Internet Control Mes ...
 - C++精华笔记
		
牛客微信推送的C++笔记:2016-12-12 14:23:26 1.C++不仅支持面向对象,也可以像C一样支持面向过程. 2.OOP三大特性:封装 继承 多态 3.函数重载依据:函数类型and形 ...
 - C++之STL总结精华笔记
		
一.一般介绍 STL(StandardTemplate Library),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程 ...
 - MySQL精华笔记
		
1.mysql分为 server 层和存储引擎: server 层: 1.连接器:管理连接权限验证 2.查询缓存:命中缓存直接换回查询结果 3.分析器:分析语法 4.优化器:生成执行计划,选择索引 5 ...
 - iteye上总结的编程精华资源
		
原文:http://www.iteye.com/magazines/130 博客是记录学习历程.分享经验的最佳平台,多年以来,各路技术大牛在ITeye网站上产生了大量优质的技术文章,并将系列文章集结成 ...
 - DDD领域驱动设计理论篇 - 学习笔记
		
一.Why DDD? 在加入X公司后,开始了ASP.NET Core+Docker+Linux的技术实践,也开始了微服务架构的实践.在微服务的学习中,有一本微软官方出品的<.NET微服务:容器化 ...
 - 《代码整洁之道》(Clean Code)- 读书笔记
		
一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...
 - 《容器化.NET应用架构指南》脑图学习笔记(第一部分)
		
一.关于这本官方“圣经” 作为.NET程序员,对于微软官方推动的架构示例总是特别关注,从PetShop到MusicStore再到eShopOnContainers,每一次关注,都会了解到业界最新的架构 ...
 - 【劳动节江南白衣Calvin 】我的后端开发书架2015
		
自从技术书的书架设定为”床底下“之后,又多了很多买书的空间.中国什么都贵,就是书便宜. 不定期更新,在碎片化的阅读下难免错评. 书架主要针对Java后端开发,书单更偏爱那些能用简短流畅的话,把少壮不努 ...
 
随机推荐
- Maven-007-Nexus 用户添加,用户角色分配,用户修改密码,管理员重置用户密码
			
配置好 maven nexus 私服后,默认的用户可通过查看[Users]查看当前私服中所存在的用户,如下图所示:
 - windows的Timer和写文件方式串口注意!
			
1.Timer要读取并分发消息,才能触发自定义回调函数 SetTimer(NULL, 1, 40, (TIMERPROC)TimerProc); while(GetMessage(&msg, ...
 - swift2.0单例
			
import Foundation public class SwiftSingleton{ var name = "000" public static le ...
 - 使用Mod_JK链接Apache和Tomcat
			
There are many potential problems associated with the default configuration of mod_jk. Let's say it ...
 - mysql-四舍五入
			
四舍五入:1.format函数:select FORMAT(2.567,2); 返回:2.57select FORMAT(12562.6655,2); 返回:12,562.67 //整数部分超过三位的 ...
 - 访问 Android Developers 403 错误
			
原因: 以前改过 hosts. 现在用的 威-屁-恩. 解决办法: 把改过的 hosts 删掉就行了.
 - 函数类型+WINAPI+函数名(例如inline DWORD static WINAPI RecordToKeys(const DRWT& theDRWT,WTSBH* pKey,DWORD dwMaxNum)
			
winapi标识符在WINDEF.H定义,语句如下: #define winapi __stdcall 让我们说说这个__stdcall stdcall调用约定 stdcall很多时候被称为pasca ...
 - WGS84坐标和UTM坐标的转换
			
如题.做了一个Demo,主要是把最后面的参考资料1里面的脚本改成了C语言版本的. 代码: #ifndef __COORCONV_H__ #define __COORCONV_H__ #include ...
 - js 父窗体
			
1.关闭 父窗体 window.opener.opener=null;window.opener.close() 2.刷新父窗体 JS刷新父窗口的几种方式 浮层内嵌iframe及frame集合窗 ...
 - echo(),print(),print_r(),var_dump的区别?
			
常见的输出语句 echo()可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用. print()函 ...