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

Jsp(主要内容)

Jsp主要内容

  • 一、C/S 与 B/S
  • 二、tomcat
  • 三、端口占用
  • 四、jsp 基本语法
  • 五、jsp 脚本
  • 六、注释
  • 七、session 与 cookies
  • 八、九大内置对象

一、C/S 与 B/S

  C/S 又称 Client/Server 或客户/服务器模式。服务器通常采用高性能的 PC、工作站或小型机,并采用大型数据库系统,如 Oracle、Sybase、Informix 或 SQL Server。客户端需要安装专用的客户端软件,如优酷客户端。

  B/S 是 Brower/Server 的缩写,客户机上只要安装一个浏览器(Browser),如 360 浏览器、谷歌、火狐或 Internet Explorer,服务器上安装 Oracle、Sybase、MySQL 或 SQL Server 等数据库。浏览器通过 Web Server 同数据库进行数据交互,如优酷网页版。

  C/S 的优点是能充分发挥客户端 PC 的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快,安全性高等。缺点主要有以下几个:
  客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
   对客户端的操作系统一般也会有限制。可能适应于 Win98,但不能用于 win2000 或 Windows XP。或者不适用于微软新的操作系统等等,更不用说 Linux、Unix 等。 B/S 最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如 CA 证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。

二、tomcat

  Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服务器,可利用它响应 HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上 Tomcat 部分是 Apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。
  诀窍是,当配置正确时,Apache 为 HTML 页面服务,而 Tomcat 实际上运行 JSP 页面和 Servlet。另外,Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。不过,Tomcat 处理静态 HTML 的能力不如 Apache 服务器。

tomcat 目录结构:

bin	包含有 startup.bat(启动服务器)与 shutdown.bat(关闭服务器)文件
conf	包含设置部署在 Tomcat 上的 Web 应用的变量的初始值的设置文件,其中常用 server.xml 配置服务端口
lib	包含被 Tomcat 使用的各种各样的 jar 依赖文件。
logs	Tomcat 的日志文件。
webapps	部署 Web 应用的程序的地方,其中 ROOT 目录是 tomcat 首页目录,可以被其他项目替换,访问时不需要项目名
work	由 Tomcat 自动生成,这是 Tomcat 放置它运行期间的中间(intermediate)文件(诸如编译的 JSP 文件)地方

  项目目录 Tomcat 的 Web 应用程序应该由如下目录组成

  页面内容等文件的存放位置:*.html, *.jsp 等可以有许多目录层次,由用户的网站结构而定,实现的功能应该是网站的界面,也就是用户主要 的可见部分。除了HTML文件、JSP 文件外,还有 js(JavaScript)文件和 css(样式表)文件以及其他多媒体文件等。

  WEB-INF/web.xml 这是一个 Web 应用程序的描述文件。这个文件是一个 XML 文件,描述了 Servlet 和这个 Web 应用程序的其他组件信息,此外还包括 一些初始化信息和安全约束等等。

  WEB-INF/classes/ 这个目录及其下的子目录应该包括这个 Web 应用程序的所有 JavaBean 及 Servlet 等编译好的 Java 类文件(*.class)文件和相关配置文件。 通常 WEB-INF/lib/ 这个目录一般存放第三方 jar 包。

  注意:WEB-INF 目录中包含应用软件所使用的资源,都不能被客户机直接所访问。
  练习:参照 Linux 章节完成 windows 上项目部署

  1.在 Windows 上的 8080 端口部署 zy-offiec 项目。并提供相应的操作截图形成 word 文档。
  2.在 Windows 上的 80 端口部署 zy-company 项目。并提供相应的操作截图形成 word 文档。

三、端口占用

  一般的,用作服务的应用每个都需要监听(占用)相应的端口,请求该端口获取对应的服务。然而在开发中经常会遇到端口占用问题,端口一旦被占用。后面的应用要么采用换一个端口的方式、要么就强制结束占用的进程。下面两种分别针对 windows 和 linux 中的 centos 7 结束端口进程的命令。

windows :

C:\Users\Administrator>netstat -aon|findstr 8080TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       6064C:\Users\Administrator>taskkill /f  /pid 6064
成功: 已终止 PID6064 的进程。

centos:

ss -lpn src :8080
kill 6723

  也可以使用 java 提供的统一查看 java 进程的命令 jps,然后再根据对应系统的结束进程命令结束。

C:\Users\Administrator>jps
2440 jar
6716 JpsC:\Users\Administrator>taskkill /f /pid 2440
成功: 已终止 PID2440 的进程。

在 windows 上也可以通过任务管理器结束 java 的程序。
在这里插入图片描述

四、jsp 基本语法

  创建一个企业级 WEB 应用并配置 Tomcat,创建完项目后启动 Tomcat,并配置 Tomcat 自动更新修改的 jsp 资源。
在这里插入图片描述
JSP 是一个包括指令标识、HTML 代码、JavaScript 代码、嵌入的 Java 代码、注释和 JSP 动作标识的 jsp 文件。但这些内容并不是一个 JSP 页面所必需的。下面将通过一个简单的 JSP 页面说明 JSP 页面的构成。

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%Date date = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String today = simpleDateFormat.format(date);
%>
<%=today%>
</body>
</html>

  前三行是指令标识,指令标识主要用于设定整个 JSP 页面范图内的导包信息和编码信息,它是被 tomcat 服务器解释并执行的,不会产生任何内容输出到网页中。也就是说,指令标识对于客户端浏览器是不可见的。

  JSP 指令标识的语法格式如下:

<%@指令名 属性1="属性值1" 属性2="属性值2"......%>

  指令参数说明:

  指令名:用于指定指令名称,在 JSP 中包含 page、include 和 tagib 等 3 条指令。

  属性:用于指定属性名称,不同的指令包含不同的属性。在一个指令中, 可以设置多个属性, 各属性之间用逗号或空格分隔。

  属性值:用于指定属性值。

  include 与 taglib 指令

  文件包含指令 include 是 JSP 的另一条指令标识。通过该指令可以在一个 JSP 页面中包含另一个 JSP 页面。该指令只有一个 file 属性,用于指定要包含文件的路径。该路径可以是相对路径,也可以是绝对路径。

<%@ include file="header.jsp"%>

  在 JSP 文件中,可以通过 taglib 指令标识声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀。在页面中引用标签库后,就可以通过前缀来引用标签库中的标签。后面我们会用到 jstl 的标签库

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

  注意:在 jsp 中的页面不要使用 HTML 的标签头不然在页面嵌套时会出现一些奇怪的错误。

五、jsp 脚本

  在 JSP 页面中,脚本标识使用得最为频繁。因为它们能够很方便、灵活地生成页面中的动态内容。

  1.JSP 表达式

  用于向页面中输出信息,其语法格式如下:

<%=表达式%>

  表达式:可以是任何 Java 语言的完整表达式。该表达式的最终运算结果将被转换为字符串。

<%String manager="mr";%>         定义保存管理员名的变量
管理员: <%=manager %>            输出结果为:管理员: mr
<%="管理员:"+manager %>          输出结果为管理员: mr
<%= 5+6 %>                       输出结果为11
<%String ur="126875jpg" %>       定义保存文件名称的变量
<img src="images/<%=url %>">     输出结果为: <img src="lmages/126875.jpg">

  2.声明标识

  声明标识用于在 JSP 页面中定义全局的变量或方法。通过声明标识定义的变量和方法可以被整个 JSP 页面访问,所以通常使用该标识定义整个 JSP 页面需要引用的变量或方法。

声明标识的语法格式如下:

<%!声明变量或方法的代码%>

  每个 jsp 都将编译为 Servlet,而声明变量或方法将会转化为该 Servlet 的成员变量和成员方法。

<%!int number = 0;       //声明全局变量int count() {         //声明全局方法number++;         //累加numberreturn number;    //返回number的值}
%>

  通过上面的代码声明全局变量和全局方法后,在后面如果通过<%=count()%>调用全局方法,则每次刷新页面,都会输出前一次值+1的值。

  3.代码片段

  所谓代码片段就是在 JSP 页面中嵌入的 Java 代码或是脚本代码。代码片段将在页面请求的处理期间被执行,通过 Java 代码可以定义变量或是流程控制语句等:而通过脚本代码可以应用 JSP 的内置对象在页面输出内容、处理请求和响应、访间 session 会话等。

案例:通过代码片段和 JSP 表达式在 JSP 页面中输出九九乘法表

<%String str = "";//声明保存九九乘法表的字符串变量for (int i = 1; i <= 9; i++) {//外循环for (int j = 1; j <= i; j++) {//内循环str += j + "X" + i + "=" + j * i;str += " ";//加入空格符}str += "<br>";//加入换行}
%>
<%=str%>

案例:代码片段和表达式配合使用。

<body>
<%List list = Arrays.asList("张三", "李四", "王二", "麻子","王五");
%>
<%for (Object o : list) {
%>
<p><%=o%></p>
<%}
%>
</body>

  注意:在 web 项目中如果使用到第三方 jar 包,需要将它放在 WEB-INF/lib 目录下。如果目录不存在则创建,拷贝进去的 jar 包需要右键加入的项目依赖中。

  练习:

  1.循环练习:创建项目 demo1,在 index1.jsp 中使用 java 的循环完成 A-Z 的输出。
在这里插入图片描述
  2.数据库表格查询:在项目 demo1 中创建页面 index2.jsp,并下载数据表数据,导入数据库 staff 后在 index2.jsp 中使用 jdbc 将数据生成如下表格样式,样式使用 bootstrap。
数据下载:
链接:https://pan.baidu.com/s/19Q946fM8l5m7r2RycB-KTw
提取码:ljfs
在这里插入图片描述
参考代码:

index1.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>hello world</title><style>* {padding: 0;margin: 0;}.content {margin: 10px auto;border: 2px dotted #000000;width: 600px;height: 400px;display: table;}.content div {background: #907e35;display: inline-block;width: 180px;height: 180px;margin: 10px;text-align: center;color: white;line-height: 180px;font-size: 100px;}</style>
</head>
<body>
<div class="content"><%for (char i = 'A'; i < 'Z'; i++) {%><div><%=i%></div><%}%>
</div>
</body>
</html>

index2.jsp

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">
</head>
<body><table class="table table-bordered table-hover table-condensed"><thead><tr class="success"><th>ID</th><th>姓名</th><th>部门</th><th>薪水</th><th>级别</th><th>入职时间</th></tr></thead><tbody><%Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql:///mydb", "root", "123456");PreparedStatement statement = connection.prepareStatement("select * from staff");ResultSet resultSet = statement.executeQuery();while (resultSet.next()) {%><tr><td><%=resultSet.getObject(1)%></td><td><%=resultSet.getObject(2)%></td><td><%=resultSet.getObject(3)%></td><td><%=resultSet.getObject(4)%></td><td><%=resultSet.getObject(5)%></td><td><%=resultSet.getObject(6)%></td></tr><%}resultSet.close();statement.close();connection.close();%></tbody>
</table>
</body>
</html>

六、注释

  由于 JSP 页面由 HTML、css、Java 脚本等组成,所以在其中可以使用多种注释格式,本节将对这些注释的语法进行讲解。

  1.html 注释(<!–1111–>)HTML语言的注释不会被显示在网页中,但是在浏览器中选择查看网页源代码时,还是能够看到注释信息的。

  2.jsp 表达式内的注释(和 java 中一样)

  3.隐藏注释(<%-- 注释内容 --%>)这种注释不仅在浏览器中看不到,而且在查看HTML源代码时也看不到,所以这种注释的安全性比较高。

  4.JavaScript 代码注释(//),但是右键查看代码时可以看到里面被注释的内容。

案例:

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head><title>hello world</title>
</head>
<body>
<%//int a = 12; jsp脚本注释和java一样
%>
<%--<div>1</div>jsp注释,右键查看代码看不到--%>
<!--html注释,右键查看源代码时能看到--><script>
//alert(1)JavaScript的注释,注释的内容可以在浏览器调试时看到
<%--alert(1)jsp注释,右键查看代码看不到--%>  
</script>
</body>
</html>

七、session 与 cookies

  http 是无状态的协议,客户每次读取 web 页面时,服务器都打开新的连接会话,而且服务器也不会自动维护客户的信息,那么要怎么才能实现会话跟踪呢?

  session 就是一种保存上下文信息的机制,它是针对每一个浏览器客户端的,变量的值保存在服务器端,通过 SessionID 来区分不同的客户,session 是以cookie 或 URL 重写为基础的,默认使用 cookie 来实现,系统会创造一个名为 JSESSIONID 的输出返回给客户端 Cookie 保存。

  即 web 服务会为每个浏览器创建对应的 session 空间,而 session 的 id 会通过 setcookie 的响应头设置到对应浏览器端,浏览器端每次请求都会带上该cookie,于是服务端便知道哪个浏览器登录了。

  注意:jsp 的本质其实就是 Servlet,在运行 jsp 项目时 tomcat 将 jsp 编译成 Servlet 源码并编译运行,这一系列的操作都是底层的 jdk 完成的。所以在 jsp 的服务器上,不能只安装 jre 运行环境。

  案例:三个页面 index.jsp,login.jsp,check.jsp 在 login.jsp 上用表单输入用户名密码,数据提交到 check.jsp 后校验,如果值为 admin/123 则跳转index.jsp,在页面上显示 admin 欢迎你,否则跳转 login.jsp

  login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录</title>
</head>
<body>
<form action="check.jsp"><input name="name"><input name="pwd"><input type="submit" value="提交">
</form>
</body>
</html>

check.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>检查</title>
</head>
<body>
<%String name=request.getParameter("name");//获取请求里面的键叫name参数String pwd=request.getParameter("pwd");if (name.equals("admin") && pwd.equals("123")){session.setAttribute("user",name);//把用户名存到sessionresponse.sendRedirect("index.jsp");//重定向到index.jsp}else {response.sendRedirect("login.jsp");}
%>
</body>
</html>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>首页</title>
</head>
<body>
<%if (session.getAttribute("user") == null) {//如果 session 里面没有用户信息response.sendRedirect("login.jsp");//重定向到 login.jsp}
%>
<%=session.getAttribute("user")%>欢迎你
</body>
</html>

八、九大内置对象

  由于 JSP 使用 Java 作为脚本语言,所以 JSP 将具有强大的对象处理能力,并且可以动态创建 Web 页面内容。但 Java 语法在使用一个对象前,需要先实例化这个对象,这其实是一件比较繁琐的事情。 JSP为了简化开发,提供了一些内置对象,用来实现很多 JSP 应用。在使用 JSP 内置对象时,不需要先定义这些对象,直接使用即可。

  在 JSP 中一共预先定义了 9 个这样的对象,分别为 request、response、session、 application、out、 pageContext、config、 page 和 exception。

  1.request 对象

  对象封装了由客户端生成的 HTTP 请求的所有细节,主要包括 HTTP 头信息、系统信息、 请求方式和请求参数等。通过 request 对象提供的相应方法可以处理客户端浏览器提交的 HTTP 请求中的各项参数。

   一般使用 request.getParameter(“id”) 获取请求地址后的参数,如:index.jsp?id=12

  注意:在使用 request 的 getParameter() 方法获取传递的参数值时,如果指定的参数不存在,将返回 null;如果指定了参数名,但未指定参数值,将返回空的字符串"";

  案例:请求地址如下/deal.jsp?id=12&name=张三&pwd=123,将获取的值输出到 jsp 上。

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head><title>hello world</title>
</head>
<body>
id:<%=request.getParameter("id")%>
<br>
name:<%=request.getParameter("name")%>
<br>
pwd:<%=request.getParameter("pwd")%>
</body>
</html>

  2.response 对象

  response 对象用于响应客户请求,向客户端输出信息。它封装了 JSP 产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。每个 response 对象在所属的 JSP 页面内有效。

  重定向

  使用 response 对象提供的 sendRedirect() 方法可以将网页重定向到另一个页面。

response.sendRedret("login.jsp")://让浏览器自动跳转到login.jsp路径上

  3.session 对象

  session 在网络中被称为会话。由于 HTTP 协议是一种无状态协议, 也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP 协议提供了 session 通过 session 可以在应用程序的 Web 页面间进行跳转时,保存 用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session 对象就会自动消失。这个时间取决于服务器,例如,Tomcat 服务器默认为 30 分钟。不过这个时间可以通过编写程序进行修改。 主要有两个常用方法 setAttribute() 方法和 getAttribute()方法。

  4.config 对象

  主要用于取得服务器的配置信息。通过 pageContext 对象的 getServletConfig() 方法可以获取一个 config 对象。当一个 Servlet 初始化时,容器把某些信息通过config 对象传递给这个 Servlet。开发者可以在 web.xml 文件中为应用程序环境中的 Servlet 程序和 JSP 页面提供初始化参数。常用方法如下中 getServletContexl() 、getServletName()、 getinitParameter()、getInitParametrNames()

  5.application 对象

  用于保存所有应用程序中的公有数据。它在服务器启动时自动创建,在服务器停止时销毁。当 application 对象没有被销毁时,所有用户都可以共享该application 对象。与 session 对象相 比,application 对象的生命周期更长,类似于系统的“全局变量”。

  6.out 对象

  out 对象一个最基本的应用就是向客户端浏览器输出信息。out 对象可以输出各种数据类型的数据, 在输出非字符串类型的数据时,会自动转换为字符串进行输出。与<%=“字符串”%>作用相同。

  7.page 对象

  代表 JSP 本身,只有在 JSP 页面内才是合法的。page 对象本质上是包含当前 Servlet 接口引用的变量,可以看作是this关键字的别名。只有几个简单的方法gelClass() 、hashCode()、toString()、equls()

  8.pageContext 对象

  获取页面上下文的 pageContext 对象是一个比较特殊的对象,通过它可以获取 JSP 页面的 request、response、session、application、exception 等对象。pageContext 对象的创建和初始化都是由容器来完成 的,JSP 页面中可以直接使用 pageContex t对象。在实际开发中用的极少。

  9.exception 对象

  exception 对象用来处理 JSP 文件执行时发生的所有错误和异常,只有在 page 指令中设置为 isErorPage 属性值为 true 的页面中才可以被使用,在一般的 JSP 页面中使用该对象将无法编译 JSP 文件。

章节练习:

1.创建项目 demo2 ,并导入数据库数据 user 使用 login.jsp、check.jsp、index.jsp 完成登录逻辑,用户再未登录情况下不能访问 index.jsp,同时在 check.jsp 中连接数据库并校验账号密码是否正确,数据库密码使用 md5 加密,同时使用 bootstrap 美化页面,index.jsp 负责将所有用户除了密码的其他信息显示在页面上。
数据下载:
链接:https://pan.baidu.com/s/19Q946fM8l5m7r2RycB-KTw
提取码:ljfs

参考代码:
index.jsp

<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>首页</title>
</head>
<body>
<%if (session.getAttribute("userInfo") == null) {response.sendRedirect("login.jsp");}Map userInfo = (Map) session.getAttribute("userInfo");
%>
<div>用户信息:编号<%=userInfo.get("id")%>
</div>
<div>用户信息:姓名<%=userInfo.get("true_name")%>
</div>
<div>用户信息:电话<%=userInfo.get("telephone")%>
</div>
<div>用户信息:邮箱<%=userInfo.get("email")%>
</div>
</body>
</html>

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录</title>
</head>
<body>
<form action="check.jsp"><input name="login_name"><br><input name="login_password"><br><input type="submit" value="提交">
</form>
</body>
</html>

check.jsp

<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.security.MessageDigest" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>检查</title>
</head>
<body>
<%String loginName = request.getParameter("login_name");String loginPassword = request.getParameter("login_password");//md5加密StringBuffer sb = new StringBuffer(32);MessageDigest md = MessageDigest.getInstance("MD5");byte[] array = md.digest(loginPassword.getBytes());for (int i = 0; i < array.length; i++) {sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toUpperCase(), 1, 3);}Class.forName("com.mysql.jdbc.Driver");Connection connection = DriverManager.getConnection("jdbc:mysql:///mydb", "root", "123456");PreparedStatement statement = connection.prepareStatement("select * from user where login_name=? and login_password =?");statement.setObject(1, loginName);statement.setObject(2, sb.toString());ResultSet resultSet = statement.executeQuery();if (resultSet.next()) {Map map = new HashMap();map.put("id", resultSet.getObject("id"));map.put("true_name", resultSet.getObject("true_name"));map.put("login_name", resultSet.getObject("login_name"));map.put("telephone", resultSet.getObject("telephone"));map.put("email", resultSet.getObject("email"));session.setAttribute("userInfo", map);}resultSet.close();statement.close();connection.close();response.sendRedirect("index.jsp");
%>
</body>
</html>
http://www.lryc.cn/news/2419894.html

相关文章:

  • 关于使用response.addHeader下载中文名乱码问题
  • 2024两种免费永久域名,手快有,手慢无
  • LED驱动电路设计及原理分析
  • 《C#入门经典 第7版》读书笔记_集合
  • Java常见面试题-100道
  • 超标量技术
  • 科学把妹法
  • 3D技术及其应用
  • 论坛安装教程
  • android 6.0 官方下载,安卓6.0官方正式版
  • Git的简单使用(二)分支管理
  • 你女朋友也能读懂的LAMP架构
  • 基于django的网上电影系统,附源码
  • Windows内核对象(3) -- DuplicateHandle实现文件占用
  • .NET(C#) 基础教程及进阶教程
  • jquery按钮置灰_点击提交按钮后按钮变灰色不可用状态的三种方法
  • 【转】数据脱敏、加密、假名化、去标识化与匿名化的区分
  • Windows7系统关闭端口
  • ajaxfileupload的使用实例
  • CSS之 border 属性
  • MFC EnableWindow() 启用和禁用控件(设置个控件或窗口可用/不可用),ShowWindow()使某个控件或窗口(显示/不显示)可见/不可见
  • 谷歌地图API
  • 【openstack】Nova(Folsom)虚拟化层Driver分析
  • [1166]CDH集群删除主机节点
  • 怎么利用tombstones墓碑文件分析崩溃问题
  • 最简单的视频网站(JavaEE+FFmpeg)
  • Linux——简介
  • JavaEE进阶(12)Spring事务和事务传播机制:事务回顾、Spring中事务的实现、@Transactional详解(用法、rollbackFor、事务隔离级别、事务传播机制)
  • W5100常见问题解答汇总(持续更新中)
  • Vue 点击进入下一页,下一页从顶部开始