11 jstl标签 JSP开发模式 注册案例
来源:互联网 发布:智能算法优化 编辑:程序博客网 时间:2024/06/07 23:25
1 JSTL标签库
JSP标准标签库。
作用:和EL表达式一起 取代<% %>
版本:1.0 1.1和1.2(区别不大)
1.0EL表达式没有纳入规范
1.1和1.2EL表达式纳入规范
下载jar包,导入到工程中
jstl.jar
standard.jar
标签库
c.tld 核心的标签库
fn.tld EL表达式标签库
核心标签库 (core) --- c(重点)
XML(x:操作xml的标签库)
SQL(sql标签库)
FMT(fmt:国际化标签库)
JSTL函数(EL函数) el
2 JSTL快速入门
导入相应jar包。
新建JSP的文件,引入标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
直接使用标签库
<h4>传统方式</h4>
<%
int a = 10;
if(a == 10){
%>
<%= a = 10 %>
<%
}
%>
<h4>使用jstl的方式</h4>
<c:set var="i" value="10" scope="page" ></c:set>
<c:if test="${ i eq 10 }">
<font>i = 10</font>
</c:if>
3 JSTL的标签
(1) <c:out> 输出内容
value :输出的内容(常量或者变量)
default: 默认值
escapeXml:默认是true,进行转义,设置成false,不转义。
代码:
<c:out value="Hello"></c:out>
<c:out value="${name }"></c:out>
<!-- "" -->
<c:out value="${ city }" default="北京"></c:out>
<c:out value="<a href='#'>超链接</a>" escapeXml="false"/>
(2) <c:set>
* 属性
var :定义属性
value :存入的值
scope :域范围
target :修改JavaBean对象
property:修改的属性
* 向4个web域对象存入值
<c:set var="i" value="10" scope="request" ></c:set>
* 修改JavaBean对象属性的值
<c:set target="${ user }" property="username" value="小凤"></c:set>
(3) <c:remove>
* 属性
var :删除的属性
scope :在域的范围
* 代码
<c:set var="name" value="小凤" scope="page"></c:set>
${ name }
<c:remove var="name" scope="page"/>
${name }
(4) <c:catch>
* 属性:var 把异常的信息保存变量中
* 代码
<c:catch var="e">
<%
int a = 10/0;
%>
</c:catch>
${ e.message }
(5) <c:if> 没有<c:else>标签
* 属性
* test 判断的条件
* var 计算的结果保存到变量中
* scope 域的范围
* 代码
<c:set var="i" value="10" scope="page"></c:set>
<c:if test="${ i ge 10 }" var="x" scope="page">
i >= 10
</c:if>
<c:if test="${ i lt 10 }">
i < 10
</c:if>
${ x }
(6) <c:choose>标签
<c:when>
<c:otherwise>
代码:
<c:set var="i" value="10" scope="page"></c:set>
<c:choose>
<c:when test="${ i ge 10 }">
i >= 10
</c:when>
<c:when test="${ i lt 10 }">
i < 10
</c:when>
<c:otherwise>
其他
</c:otherwise>
</c:choose>
(7) <c:forEach>(*****)
* 循环遍历数据(数组,集合,Map集合)
* 属性
var :遍历数据的类型
items :要遍历的内容
begin :从哪开始
end :到哪结束
step :步长
varStatus:记录循环遍历的信息
* index
* count(常用)
* first
* last
* 代码
<%
String [] arrs = {"美美","小凤","芙蓉","小苍"};
request.setAttribute("arrs", arrs);
%>
<!-- for(String s : arrs){ } -->
<c:forEach var="s" items="${ arrs }">
${ s }
</c:forEach>
<h4>遍历集合</h4>
<%
List<String> list = new ArrayList<String>();
list.add("美美");
list.add("小凤");
list.add("芙蓉");
list.add("小泽");
request.setAttribute("list", list);
%>
<c:forEach var="s" items="${ list }">
${ s }
</c:forEach>
<h4>遍历Map集合</h4>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("aa", "美美");
map.put("bb", "小凤");
map.put("cc", "芙蓉");
request.setAttribute("map", map);
%>
<c:forEach var="entry" items="${ map }">
${ entry.key } -- ${ entry.value }
</c:forEach>
<h4>遍历对象的集合</h4>
<%
List<User> uList = new ArrayList<User>();
uList.add(new User("美美","123"));
uList.add(new User("小风","234"));
uList.add(new User("芙蓉","345"));
request.setAttribute("uList", uList);
%>
<c:forEach var="user" items="${ uList }">
${ user.username } -- ${ user.password }
</c:forEach>
<h4>迭代数据</h4>
<h4>迭代从1到10</h4>
<c:forEach var="i" begin="1" end="10" step="2">
${ i }
</c:forEach>
<h4>计算从1加到100的和</h4>
<c:set var="sum" value="0" scope="page"></c:set>
<c:forEach var="i" begin="1" end="100" step="1">
<c:set var="sum" value="${ sum + i }"></c:set>
</c:forEach>
${ sum }
<h4>遍历10到100的偶数,每到第3个数,显示红色</h4>
<c:forEach var="i" begin="10" end="100" step="2" varStatus="status">
<c:choose>
<c:when test="${ status.first }">
<font color="blue">${ i }</font>
</c:when>
<c:when test="${ status.count % 3 eq 0 }">
<font color="red">${ i }</font>
</c:when>
<c:otherwise>
${ i }
</c:otherwise>
</c:choose>
</c:forEach>
(8) <c:param> 传递参数
* 属性
name :参数名称
value :参数的值
(9) <c:import> 包含页面
* url :引入页面的地址
* context :虚拟路径
* var :引入页面保存到属性中
* scope :域的范围
* 代码
<c:import url="/jstl/choose.jsp" context="/day13" var="i" scope="page">
<c:param name="username" value="meimei"></c:param>
</c:import>
${ i }
(10) <c:url>
<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。
URL重写就是将会话标识号以参数形式附加在URL地址后面
http://localhost/day12/demo?jsessionid=xxxxxxxxxxxxxxxxxx;
* 属性
* var :声明属性
* value :地址
* scope :域范围
* context :虚拟路径
* 代码
<c:url var="i" value="/jstl/choose.jsp" scope="request" context="/day13">
<c:param name="username" value="xiaofeng"></c:param>
</c:url>
<a href="${ i }">choose</a>
(11) <c:redirect>重定向
* 属性
* url :重定向的地址
* context :虚拟路径
* 代码
<c:redirect url="/jstl/choose.jsp" context="/day13">
<c:param name="username" value="furong"></c:param>
</c:redirect>
(12) <c:forTokens>分隔字符串(了解)
<h4>分隔字符串</h4>
<c:set var="i" value="aa,bb,cc" scope="page"></c:set>
<c:forTokens items="${i }" delims="," var="x">
${ x }
</c:forTokens>
4 JSP开发的模式(MVC)
5 完成注册的需求
(1) 图片
(2)分析
* 完成注册的需求
* 注册表单(案例)
* 数据库(没有)
* 使用xml来代替。
* 架构
Servlet + JSP + JavaBean
* 技术
* 解析XML使用DOM4J技术
* Servlet技术
* BeanUtils技术
* JSTL+EL表达式
* 创建新的项目
* 导入jar包
* 创建包结构
* 开发的步骤
* 编写注册的页面,
用户名,密码,确认密码,别名,邮箱,验证码
* 先完成数据的校验 onsubmit()
* 都不能为空,密码和确认密码一致
* 邮箱格式正确(正则表达式)
* 发送请求,请求Servlet,接收数据,封装,处理数据
* 显示到JSP上。
(3)代码
-----------------------------------------------------
// reg.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 完成校验 run() 返回false
// 用户名不能为空
// 密码不能为空,不能少于6位
// 确认密码和密码一致
// 昵称不能为空
// 邮箱正确的邮箱格式 /.+@.+\.[a-zA-Z]{2,4}$/
// 可以提交了
</script>
</head>
<body>
<form action="/day13_mvc/reg" method="POST" onsubmit="return run()" >
<table border="1" width="60%">
<tr>
<td>
用户名
</td>
<td>
<input type="text" name="username" />
</td>
</tr>
<tr>
<td>
密码
</td>
<td>
<input type="password" name="password" />
</td>
</tr>
<tr>
<td>
确认密码
</td>
<td>
<input type="password" name="repassword" />
</td>
</tr>
<tr>
<td>
昵称
</td>
<td>
<input type="text" name="nickname" />
</td>
</tr>
<tr>
<td>
邮箱
</td>
<td>
<input type="text" name="email" />
</td>
</tr>
<tr>
<td>
验证码
</td>
<td>
<input type="text" name="code" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="注册"/>
</td>
</tr>
</table>
</form>
</body>
</html>
-----------------------------------------------------
// RegServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.itcast.service.RegService;
import cn.itcast.utils.MyXmlUtil;
import cn.itcast.vo.User;
/**
* 完成注册(控制器)
* @author Administrator
*
*/
public class RegServlet extends HttpServlet {
private static final long serialVersionUID = -6807725510424430537L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/**
* 1.获取参数列表
* 2.需要把数据封装到JavaBean中,使用BeanUtils开发包
* 3.处理数据,调用另一个JavaBean中
* 4.把结果返回到页面中
*/
// 获取参数列表
User user = new User();
// 封装数据
// 处理
RegService reg = new RegService();
int flag = reg.regUser(user);
if(flag == MyXmlUtil.NAMEEXIST){
// 用户名重名了
// 转发注册页面
}else if(flag == MyXmlUtil.EMAILEXIST){
// 邮箱重名了
}else if(flag == MyXmlUtil.SUCCESS){
// 注册成功
// 跳转登陆页面
// 注册成功
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
-----------------------------------------------------
//RegService.java
import cn.itcast.utils.MyXmlUtil;
import cn.itcast.vo.User;
/**
* 操作XML
* @author Administrator
*
*/
public class RegService {
/**
* 操作XML,完成注册。XML中进行数据的添加。
* 用户名不能重名
* 邮箱是否重名
* @param user
* @return
*/
public int regUser(User user){
// 使用工具类,操作XML
// MyXmlUtil.getDocument(MyXmlUtil.PATH);
// 解析XML
// 返回1 用户名重名了,返回是2邮箱重名,返回0注册成功
return 0;
}
}
-----------------------------------------------------
// MyXmlUtil.java
import org.dom4j.Document;
/**
* XML的工具类
* @author Administrator
*
*/
public class MyXmlUtil {
// 数据库的路径
public static final String PATH = "d:\\user.xml";
// 用户名重名
public static final int NAMEEXIST = 1;
// 邮箱重名
public static final int EMAILEXIST = 2;
// 注册成功
public static final int SUCCESS = 0;
// 获取Documen对象
public static Document getDocument(String path){
return null;
}
// 回写
public static void writeXml(Document document,String path){
}
}
-----------------------------------------------------
// User.java
/**
* User对象
* @author Administrator
*
*/
public class User {
private String username;
private String password;
private String nickname;
private String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
-----------------------------------------------------
JSP标准标签库。
作用:和EL表达式一起 取代<% %>
版本:1.0 1.1和1.2(区别不大)
1.0EL表达式没有纳入规范
1.1和1.2EL表达式纳入规范
下载jar包,导入到工程中
jstl.jar
standard.jar
标签库
c.tld 核心的标签库
fn.tld EL表达式标签库
核心标签库 (core) --- c(重点)
XML(x:操作xml的标签库)
SQL(sql标签库)
FMT(fmt:国际化标签库)
JSTL函数(EL函数) el
2 JSTL快速入门
导入相应jar包。
新建JSP的文件,引入标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
直接使用标签库
<h4>传统方式</h4>
<%
int a = 10;
if(a == 10){
%>
<%= a = 10 %>
<%
}
%>
<h4>使用jstl的方式</h4>
<c:set var="i" value="10" scope="page" ></c:set>
<c:if test="${ i eq 10 }">
<font>i = 10</font>
</c:if>
3 JSTL的标签
(1) <c:out> 输出内容
value :输出的内容(常量或者变量)
default: 默认值
escapeXml:默认是true,进行转义,设置成false,不转义。
代码:
<c:out value="Hello"></c:out>
<c:out value="${name }"></c:out>
<!-- "" -->
<c:out value="${ city }" default="北京"></c:out>
<c:out value="<a href='#'>超链接</a>" escapeXml="false"/>
(2) <c:set>
* 属性
var :定义属性
value :存入的值
scope :域范围
target :修改JavaBean对象
property:修改的属性
* 向4个web域对象存入值
<c:set var="i" value="10" scope="request" ></c:set>
* 修改JavaBean对象属性的值
<c:set target="${ user }" property="username" value="小凤"></c:set>
(3) <c:remove>
* 属性
var :删除的属性
scope :在域的范围
* 代码
<c:set var="name" value="小凤" scope="page"></c:set>
${ name }
<c:remove var="name" scope="page"/>
${name }
(4) <c:catch>
* 属性:var 把异常的信息保存变量中
* 代码
<c:catch var="e">
<%
int a = 10/0;
%>
</c:catch>
${ e.message }
(5) <c:if> 没有<c:else>标签
* 属性
* test 判断的条件
* var 计算的结果保存到变量中
* scope 域的范围
* 代码
<c:set var="i" value="10" scope="page"></c:set>
<c:if test="${ i ge 10 }" var="x" scope="page">
i >= 10
</c:if>
<c:if test="${ i lt 10 }">
i < 10
</c:if>
${ x }
(6) <c:choose>标签
<c:when>
<c:otherwise>
代码:
<c:set var="i" value="10" scope="page"></c:set>
<c:choose>
<c:when test="${ i ge 10 }">
i >= 10
</c:when>
<c:when test="${ i lt 10 }">
i < 10
</c:when>
<c:otherwise>
其他
</c:otherwise>
</c:choose>
(7) <c:forEach>(*****)
* 循环遍历数据(数组,集合,Map集合)
* 属性
var :遍历数据的类型
items :要遍历的内容
begin :从哪开始
end :到哪结束
step :步长
varStatus:记录循环遍历的信息
* index
* count(常用)
* first
* last
* 代码
<%
String [] arrs = {"美美","小凤","芙蓉","小苍"};
request.setAttribute("arrs", arrs);
%>
<!-- for(String s : arrs){ } -->
<c:forEach var="s" items="${ arrs }">
${ s }
</c:forEach>
<h4>遍历集合</h4>
<%
List<String> list = new ArrayList<String>();
list.add("美美");
list.add("小凤");
list.add("芙蓉");
list.add("小泽");
request.setAttribute("list", list);
%>
<c:forEach var="s" items="${ list }">
${ s }
</c:forEach>
<h4>遍历Map集合</h4>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("aa", "美美");
map.put("bb", "小凤");
map.put("cc", "芙蓉");
request.setAttribute("map", map);
%>
<c:forEach var="entry" items="${ map }">
${ entry.key } -- ${ entry.value }
</c:forEach>
<h4>遍历对象的集合</h4>
<%
List<User> uList = new ArrayList<User>();
uList.add(new User("美美","123"));
uList.add(new User("小风","234"));
uList.add(new User("芙蓉","345"));
request.setAttribute("uList", uList);
%>
<c:forEach var="user" items="${ uList }">
${ user.username } -- ${ user.password }
</c:forEach>
<h4>迭代数据</h4>
<h4>迭代从1到10</h4>
<c:forEach var="i" begin="1" end="10" step="2">
${ i }
</c:forEach>
<h4>计算从1加到100的和</h4>
<c:set var="sum" value="0" scope="page"></c:set>
<c:forEach var="i" begin="1" end="100" step="1">
<c:set var="sum" value="${ sum + i }"></c:set>
</c:forEach>
${ sum }
<h4>遍历10到100的偶数,每到第3个数,显示红色</h4>
<c:forEach var="i" begin="10" end="100" step="2" varStatus="status">
<c:choose>
<c:when test="${ status.first }">
<font color="blue">${ i }</font>
</c:when>
<c:when test="${ status.count % 3 eq 0 }">
<font color="red">${ i }</font>
</c:when>
<c:otherwise>
${ i }
</c:otherwise>
</c:choose>
</c:forEach>
(8) <c:param> 传递参数
* 属性
name :参数名称
value :参数的值
(9) <c:import> 包含页面
* url :引入页面的地址
* context :虚拟路径
* var :引入页面保存到属性中
* scope :域的范围
* 代码
<c:import url="/jstl/choose.jsp" context="/day13" var="i" scope="page">
<c:param name="username" value="meimei"></c:param>
</c:import>
${ i }
(10) <c:url>
<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。
URL重写就是将会话标识号以参数形式附加在URL地址后面
http://localhost/day12/demo?jsessionid=xxxxxxxxxxxxxxxxxx;
* 属性
* var :声明属性
* value :地址
* scope :域范围
* context :虚拟路径
* 代码
<c:url var="i" value="/jstl/choose.jsp" scope="request" context="/day13">
<c:param name="username" value="xiaofeng"></c:param>
</c:url>
<a href="${ i }">choose</a>
(11) <c:redirect>重定向
* 属性
* url :重定向的地址
* context :虚拟路径
* 代码
<c:redirect url="/jstl/choose.jsp" context="/day13">
<c:param name="username" value="furong"></c:param>
</c:redirect>
(12) <c:forTokens>分隔字符串(了解)
<h4>分隔字符串</h4>
<c:set var="i" value="aa,bb,cc" scope="page"></c:set>
<c:forTokens items="${i }" delims="," var="x">
${ x }
</c:forTokens>
4 JSP开发的模式(MVC)
5 完成注册的需求
(1) 图片
(2)分析
* 完成注册的需求
* 注册表单(案例)
* 数据库(没有)
* 使用xml来代替。
* 架构
Servlet + JSP + JavaBean
* 技术
* 解析XML使用DOM4J技术
* Servlet技术
* BeanUtils技术
* JSTL+EL表达式
* 创建新的项目
* 导入jar包
* 创建包结构
* 开发的步骤
* 编写注册的页面,
用户名,密码,确认密码,别名,邮箱,验证码
* 先完成数据的校验 onsubmit()
* 都不能为空,密码和确认密码一致
* 邮箱格式正确(正则表达式)
* 发送请求,请求Servlet,接收数据,封装,处理数据
* 显示到JSP上。
(3)代码
-----------------------------------------------------
// reg.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 完成校验 run() 返回false
// 用户名不能为空
// 密码不能为空,不能少于6位
// 确认密码和密码一致
// 昵称不能为空
// 邮箱正确的邮箱格式 /.+@.+\.[a-zA-Z]{2,4}$/
// 可以提交了
</script>
</head>
<body>
<form action="/day13_mvc/reg" method="POST" onsubmit="return run()" >
<table border="1" width="60%">
<tr>
<td>
用户名
</td>
<td>
<input type="text" name="username" />
</td>
</tr>
<tr>
<td>
密码
</td>
<td>
<input type="password" name="password" />
</td>
</tr>
<tr>
<td>
确认密码
</td>
<td>
<input type="password" name="repassword" />
</td>
</tr>
<tr>
<td>
昵称
</td>
<td>
<input type="text" name="nickname" />
</td>
</tr>
<tr>
<td>
邮箱
</td>
<td>
<input type="text" name="email" />
</td>
</tr>
<tr>
<td>
验证码
</td>
<td>
<input type="text" name="code" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="注册"/>
</td>
</tr>
</table>
</form>
</body>
</html>
-----------------------------------------------------
// RegServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.itcast.service.RegService;
import cn.itcast.utils.MyXmlUtil;
import cn.itcast.vo.User;
/**
* 完成注册(控制器)
* @author Administrator
*
*/
public class RegServlet extends HttpServlet {
private static final long serialVersionUID = -6807725510424430537L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/**
* 1.获取参数列表
* 2.需要把数据封装到JavaBean中,使用BeanUtils开发包
* 3.处理数据,调用另一个JavaBean中
* 4.把结果返回到页面中
*/
// 获取参数列表
User user = new User();
// 封装数据
// 处理
RegService reg = new RegService();
int flag = reg.regUser(user);
if(flag == MyXmlUtil.NAMEEXIST){
// 用户名重名了
// 转发注册页面
}else if(flag == MyXmlUtil.EMAILEXIST){
// 邮箱重名了
}else if(flag == MyXmlUtil.SUCCESS){
// 注册成功
// 跳转登陆页面
// 注册成功
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
-----------------------------------------------------
//RegService.java
import cn.itcast.utils.MyXmlUtil;
import cn.itcast.vo.User;
/**
* 操作XML
* @author Administrator
*
*/
public class RegService {
/**
* 操作XML,完成注册。XML中进行数据的添加。
* 用户名不能重名
* 邮箱是否重名
* @param user
* @return
*/
public int regUser(User user){
// 使用工具类,操作XML
// MyXmlUtil.getDocument(MyXmlUtil.PATH);
// 解析XML
// 返回1 用户名重名了,返回是2邮箱重名,返回0注册成功
return 0;
}
}
-----------------------------------------------------
// MyXmlUtil.java
import org.dom4j.Document;
/**
* XML的工具类
* @author Administrator
*
*/
public class MyXmlUtil {
// 数据库的路径
public static final String PATH = "d:\\user.xml";
// 用户名重名
public static final int NAMEEXIST = 1;
// 邮箱重名
public static final int EMAILEXIST = 2;
// 注册成功
public static final int SUCCESS = 0;
// 获取Documen对象
public static Document getDocument(String path){
return null;
}
// 回写
public static void writeXml(Document document,String path){
}
}
-----------------------------------------------------
// User.java
/**
* User对象
* @author Administrator
*
*/
public class User {
private String username;
private String password;
private String nickname;
private String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
-----------------------------------------------------
阅读全文
0 0
- 11 jstl标签 JSP开发模式 注册案例
- 【JSP开发】JSTL标签参考手册
- 使用JSTL开发jsp自定义标签开发
- JSP标签案例-开发防盗链标签
- 使用JSTL开发jsp自定义标签开发---迭代标签
- 常用jstl标签案例
- JSP简单标签开发案例和打包
- Android_MVP开发模式登录注册案例
- JSP标签(JSTL)
- jsp---JSTL标签详解
- JSP JSTL fn标签
- JSP: JSTL标签详解
- jsp标签&jstl
- JSP:JSTL标签使用
- jsp标签库(jstl)
- JSP JSTL标签
- JSP JSTL标签用法
- JSP标签库JSTL
- mongoDB学习笔记之创建用户账户以及权限
- FFmpeg安装--命令--Java封装
- 第十章 类
- CSS3的REM设置字体大小
- 【Vue】安装
- 11 jstl标签 JSP开发模式 注册案例
- CentOS7系统下YUM安装安装Mongodb 3.4
- Construct 2 小游戏制作和软件设计
- innerHTML, outerHTML, innerText, outerText, textContent
- leetcode Merge k Sorted Lists
- Android反编译与破解工具次序
- Leetcode算法学习日志-399 Evaluate Division
- Oracle数据库 Navicat代码提示不可用的问题
- KMP,深入讲解next数组的求解