struts2 标签单选框

Struts2 UI tags are used to generate HTML form elements in result pages. Earlier we looked into Struts2 Data Tags and Struts2 Control tags and how we can use OGNL expressions with Struts2 tags. This tutorial is aimed to provide details about the most commonly used Struts2 UI tags with a simple project.

Struts2 UI标记用于在结果页面中生成HTML表单元素。 之前,我们研究了Struts2数据标签和Struts2控制标签,以及如何将OGNL表达式与Struts2标签一起使用。 本教程旨在通过一个简单的项目提供有关最常用的Struts2 UI标签的详细信息。

Struts 2 UI标签 (Struts 2 UI Tags)

Struts 2 UI tags provides following functionalities out of the box:

Struts 2 UI标记提供了以下功能:

  1. Generating HTML markup language生成HTML标记语言
  2. Binding HTML form data to Action classes properties将HTML表单数据绑定到Action类属性
  3. Tie into Struts2 framework type conversion from String to Objects and vice versa将Struts2框架类型从String转换为Objects,反之亦然
  4. Tie into Struts2 framework Validation and i18n support加入Struts2框架验证和i18n支持

Struts 2 UI标签示例 (Struts 2 UI Tags Examples)

Some of the important Struts2 UI tags are:

一些重要的Struts2 UI标签是:

  1. form tag: We can create HTML form with form tag, this tag not only generates the HTML markup but also generates form id, method and action with servlet context URI. For example if we use Struts2 form tag as below

    <s:form action="Welcome" namespace="/">
    </s:form>

    The corresponding HTML getting generated is:

    Notice that in action, it automatically includes the web application servlet context and action prefix for Struts2 invocation. It also creates a table with specific class that we can use for having our own CSS styling.

    表单标签 :我们可以使用表单标签创建HTML表单,此标签不仅可以生成HTML标记,还可以使用servlet上下文URI生成表单ID,方法和操作。 例如,如果我们使用Struts2表单标签,如下所示

    <s:form action="Welcome" namespace="/">
    </s:form>

    生成的相应HTML是:

    注意,实际上,它自动包含Web应用程序Servlet上下文和Struts2调用的操作前缀。 它还会创建一个具有特定类的表,我们可以使用该类来拥有自己CSS样式。

  2. textfield tag: One of the most widely used Struts2 UI tags to create input element for user input in form. When we use this tag, it generates a table row with two columns, one for the label and another for the user input with type as text. For example;
    <s:textfield name="name" label="User Name"></s:textfield>

    Generated html is:

    textfield标记 :最广泛使用的Struts2 UI标记之一,用于为表单中的用户输入创建输入元素。 当我们使用此标记时,它将生成一个包含两列的表格行,其中一列用于标签,另一列用于用户输入,其类型为文本。 例如;

    <s:textfield name="name" label="User Name"></s:textfield>

    生成的html是:

  3. password tag:Same as textfield tag except that fields are not shown and input type is password.
    <s:password name="password" label="Password"></s:password>

    generated html snippet is

    密码标签:与文本字段标签相同,除了不显示字段并且输入类型为密码。

    <s:password name="password" label="Password"></s:password>

    生成的html代码段是

  4. textarea tag: Used to create textarea html element in the form. We can specify the textarea size with cols and rows attribute.
    <s:textarea name="bio" label="About You" cols="20" rows="3" wrap="true"></s:textarea>

    generated html code is

    textarea标签 :用于创建表单中的textarea html元素。 我们可以使用cols和rows属性指定文本区域的大小。

    <s:textarea name="bio" label="About You" cols="20" rows="3" wrap="true"></s:textarea>

    生成的html代码是

  5. checkbox tag: Used to generate checkbox element in the html form.
    <s:checkbox name="receiveUpdates" fieldValue="true" label="Check to receive updates."></s:checkbox>

    generated html code is

    checkbox标记 :用于生成html表单中的checkbox元素。

    <s:checkbox name="receiveUpdates" fieldValue="true" label="Check to receive updates."></s:checkbox>

    生成的html代码是

  6. select tag: Used to generate select box in the html page. We can use multiple attribute to allow multiple selections.
    <s:select list="{'Developer','Manager','Customer'}" name="rolesSelect" multiple="true"></s:select>

    generated html code is

    select标记 :用于在html页面中生成选择框。 我们可以使用多个属性来允许多个选择。

    <s:select list="{'Developer','Manager','Customer'}" name="rolesSelect" multiple="true"></s:select>

    生成的html代码是

  7. checkboxlist tag: Similar to select box, only difference is in the rendering of the checkboxes.
    <s:checkboxlist list="{'Developer','Manager','Customer'}" name="roleCheckbox"></s:checkboxlist>

    generated html snippet is

    checkboxlist标记 :与选择框相似,唯一的区别在于复选框的呈现方式。

    <s:checkboxlist list="{'Developer','Manager','Customer'}" name="roleCheckbox"></s:checkboxlist>

    生成的html代码段是

  8. radio tag: We can use this tag to generate radio buttons in the html page.
    <s:radio list="{'Developer','Manager','Customer'}" name="rolesRadio" multiple="true"></s:radio>

    generated html is

    radio标签 :我们可以使用此标签在html页面中生成单选按钮。

    <s:radio list="{'Developer','Manager','Customer'}" name="rolesRadio" multiple="true"></s:radio>

    生成的html是

  9. doubleselect tag: We can use this tag to link together two select boxes so that changing the value in first box changes the choices in the second select box. For example
    <s:doubleselect list="{'Developer','Manager','Tester'}" name="doubleSelectRole" label="Role"doubleList="top == 'Developer' ? {'Java','PHP'} : (top == 'Manager' ? {'HR Manager', 'Finance Manager'} : {'UI Testing', 'Functional Testing'})" doubleName="doubleSelectExpertise"></s:doubleselect>

    Generated html code is

    Notice that it automatically creates the javascript code that otherwise we would have to write on our own.

    doubleselect标记 :我们可以使用此标记将两个选择框链接在一起,以便更改第一个选择框中的值可以更改第二个选择框中的选择。 例如

    <s:doubleselect list="{'Developer','Manager','Tester'}" name="doubleSelectRole" label="Role"doubleList="top == 'Developer' ? {'Java','PHP'} : (top == 'Manager' ? {'HR Manager', 'Finance Manager'} : {'UI Testing', 'Functional Testing'})" doubleName="doubleSelectExpertise"></s:doubleselect>

    生成的html代码是

    请注意,它会自动创建javascript代码,否则我们将不得不自行编写。

  10. submit tag: Used to create submit button in the html page to submit the form.
    <s:submit value="Submit"></s:submit>

    generated html code is

    提交标签 :用于在html页面中创建提交按钮以提交表单。

    <s:submit value="Submit"></s:submit>

    生成的html代码是

Let’s create a simple Struts2 project where we can see the UI tags usage. Our final project will look like below image.

让我们创建一个简单的Struts2项目,在这里可以看到UI标记的用法。 我们的最终项目将如下图所示。

配置文件 (Configuration Files)

web.xml

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="https://java.sun.com/xml/ns/javaee" xsi:schemaLocation="https://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>Struts2UITags</display-name><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

Deployment descriptor has configuration to use Struts2 framework.

部署描述符具有使用Struts2框架的配置。

pom.xml

pom.xml

<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>Struts2UITags</groupId><artifactId>Struts2UITags</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.3.15.1</version></dependency></dependencies><build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.6</source><target>1.6</target></configuration></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>2.3</version><configuration><warSourceDirectory>WebContent</warSourceDirectory><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins><finalName>${project.artifactId}</finalName></build>
</project>

Maven project configuration with struts2-core dependency.

具有struts2核心依赖性的Maven项目配置。

struts.xml

struts.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""https://struts.apache.org/dtds/struts-2.3.dtd">
<struts><constant name="struts.convention.result.path" value="/"></constant><package name="user" namespace="/" extends="struts-default"><action name="home"><result>/home.jsp</result></action><action name="Welcome" class="com.journaldev.struts2.actions.WelcomeAction"><result name="success">/welcome.jsp</result></action></package></struts>

Simple package and action mapping with result pages.

简单的包装和操作与结果页面的映射。

Java豆 (Java Bean)

package com.journaldev.struts2.actions;public class User {private String name;private String password;private String bio;private boolean receiveUpdates;private String[] rolesSelect;private String roleCheckbox;private String[] rolesRadio;private String doubleSelectRole;private String doubleSelectExpertise;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getBio() {return bio;}public void setBio(String bio) {this.bio = bio;}public boolean isReceiveUpdates() {return receiveUpdates;}public void setReceiveUpdates(boolean receiveUpdates) {this.receiveUpdates = receiveUpdates;}public String[] getRolesSelect() {return rolesSelect;}public void setRolesSelect(String[] rolesSelect) {this.rolesSelect = rolesSelect;}public String getRoleCheckbox() {return roleCheckbox;}public void setRoleCheckbox(String roleCheckbox) {this.roleCheckbox = roleCheckbox;}public String[] getRolesRadio() {return rolesRadio;}public void setRolesRadio(String[] rolesRadio) {this.rolesRadio = rolesRadio;}public String getDoubleSelectExpertise() {return doubleSelectExpertise;}public void setDoubleSelectExpertise(String doubleSelectExpertise) {this.doubleSelectExpertise = doubleSelectExpertise;}public String getDoubleSelectRole() {return doubleSelectRole;}public void setDoubleSelectRole(String doubleSelectRole) {this.doubleSelectRole = doubleSelectRole;}}

A simple java bean with getter and setter methods for properties. Some of the variables are array where we are expecting multiple values in the form.

一个简单的Java bean,具有用于属性的getter和setter方法。 一些变量是数组,我们期望表格中有多个值。

动作班 (Action Class)

package com.journaldev.struts2.actions;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;public class WelcomeAction extends ActionSupport implements ModelDriven<User> {@Overridepublic String execute(){return SUCCESS;}private User user = new User();@Overridepublic User getModel() {return user;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}

Simple action class that is basically forwarding the request to another result page to generate the response.

简单操作类,基本上将请求转发到另一个结果页面以生成响应。

结果页 (Result Pages)

home.jsp

home.jsp

<%@ page language="java" contentType="text/html; charset=US-ASCII"pageEncoding="US-ASCII"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Home Page</title>
</head>
<body><s:form action="Welcome" namespace="/">
<s:textfield name="name" label="User Name"></s:textfield>
<s:password name="password" label="Password"></s:password>
<s:textarea name="bio" label="About You" cols="20" rows="3" wrap="true"></s:textarea>
<s:checkbox name="receiveUpdates" fieldValue="true" label="Check to receive updates."></s:checkbox><s:select list="{'Developer','Manager','Customer'}" name="rolesSelect" multiple="true"></s:select>
<s:checkboxlist list="{'Developer','Manager','Customer'}" name="roleCheckbox"></s:checkboxlist><s:radio list="{'Developer','Manager','Customer'}" name="rolesRadio" multiple="true"></s:radio><s:doubleselect list="{'Developer','Manager','Tester'}" name="doubleSelectRole" label="Role"doubleList="top == 'Developer' ? {'Java','PHP'} : (top == 'Manager' ? {'HR Manager', 'Finance Manager'} : {'UI Testing', 'Functional Testing'})" doubleName="doubleSelectExpertise"></s:doubleselect><s:submit value="Submit"></s:submit>
</s:form></body>
</html>

This is the result page where Struts2 UI tags are getting used to generate HTML response page for client. User can fill in the details and submit the form to action class.

这是Struts2 UI标记用于为客户端生成HTML响应页面的结果页面。 用户可以填写详细信息并将表单提交给动作类。

When home action is invoked, the generated HTML page looks like below image.

调用home操作时,生成HTML页面如下图所示。

The generated HTML response by the result page code is:

结果页代码生成HTML响应为:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Home Page</title>
</head>
<body><form id="Welcome" name="Welcome" action="/Struts2UITags/Welcome.action" method="post">
<table class="wwFormTable">
<tr><td class="tdLabel"><label for="Welcome_name" class="label">User Name:</label></td><td
><input type="text" name="name" value="" id="Welcome_name"/></td>
</tr><tr><td class="tdLabel"><label for="Welcome_password" class="label">Password:</label></td><td
><input type="password" name="password" id="Welcome_password"/></td>
</tr><tr><td class="tdLabel"><label for="Welcome_bio" class="label">About You:</label></td><td
><textarea name="bio" cols="20" rows="3" wrap="true" id="Welcome_bio"></textarea></td>
</tr><tr><td valign="top" align="right"></td><td valign="top" align="left"><input type="checkbox" name="receiveUpdates" value="true" id="Welcome_receiveUpdates"/><input type="hidden" id="__checkbox_Welcome_receiveUpdates" name="__checkbox_receiveUpdates" value="true" /> <label for="Welcome_receiveUpdates" class="checkboxLabel">Check to receive updates.</label> </td>
</tr><tr><td class="tdLabel"></td><td
><select name="rolesSelect" id="Welcome_rolesSelect" multiple="multiple"><option value="Developer">Developer</option><option value="Manager">Manager</option><option value="Customer">Customer</option>
</select>
<input type="hidden" id="__multiselect_Welcome_rolesSelect" name="__multiselect_rolesSelect" value="" />
</td>
</tr><tr><td class="tdLabel"></td><td
>
<input type="checkbox" name="roleCheckbox" value="Developer"id="roleCheckbox-1" />
<label for="roleCheckbox-1" class="checkboxLabel">Developer</label>
<input type="checkbox" name="roleCheckbox" value="Manager"id="roleCheckbox-2" />
<label for="roleCheckbox-2" class="checkboxLabel">Manager</label>
<input type="checkbox" name="roleCheckbox" value="Customer"id="roleCheckbox-3" />
<label for="roleCheckbox-3" class="checkboxLabel">Customer</label>
<input type="hidden" id="__multiselect_Welcome_roleCheckbox" name="__multiselect_roleCheckbox"value="" />    </td>
</tr><tr><td class="tdLabel"></td><td
>
<input type="radio" name="rolesRadio" id="Welcome_rolesRadioDeveloper" value="Developer" multiple="true"/><label for="Welcome_rolesRadioDeveloper">Developer</label>
<input type="radio" name="rolesRadio" id="Welcome_rolesRadioManager" value="Manager" multiple="true"/><label for="Welcome_rolesRadioManager">Manager</label>
<input type="radio" name="rolesRadio" id="Welcome_rolesRadioCustomer" value="Customer" multiple="true"/><label for="Welcome_rolesRadioCustomer">Customer</label></td>
</tr><tr><td class="tdLabel"><label for="Welcome_doubleSelectRole" class="label">Role:</label></td><td
>
<select name="doubleSelectRole" id="Welcome_doubleSelectRole" onchange="Welcome_doubleSelectRoleRedirect(this.selectedIndex)"><option value="Developer">Developer</option><option value="Manager">Manager</option><option value="Tester">Tester</option></select><br>
<select name="doubleSelectExpertise" id="Welcome_doubleSelectExpertise" >
</select>
<script type="text/javascript">var Welcome_doubleSelectRoleGroup = new Array(3 + 0);for (i = 0; i < (3 + 0); i++)Welcome_doubleSelectRoleGroup[i] = new Array();Welcome_doubleSelectRoleGroup[0][0] = new Option("Java", "Java");Welcome_doubleSelectRoleGroup[0][1] = new Option("PHP", "PHP");Welcome_doubleSelectRoleGroup[1][0] = new Option("HR Manager", "HR Manager");Welcome_doubleSelectRoleGroup[1][1] = new Option("Finance Manager", "Finance Manager");Welcome_doubleSelectRoleGroup[2][0] = new Option("UI Testing", "UI Testing");Welcome_doubleSelectRoleGroup[2][1] = new Option("Functional Testing", "Functional Testing");var Welcome_doubleSelectRoleTemp = document.Welcome.Welcome_doubleSelectExpertise;Welcome_doubleSelectRoleRedirect(0);function Welcome_doubleSelectRoleRedirect(x) {var selected = false;for (m = Welcome_doubleSelectRoleTemp.options.length - 1; m >= 0; m--) {Welcome_doubleSelectRoleTemp.remove(m);}for (i = 0; i < Welcome_doubleSelectRoleGroup[x].length; i++) {Welcome_doubleSelectRoleTemp.options[i] = new Option(Welcome_doubleSelectRoleGroup[x][i].text, Welcome_doubleSelectRoleGroup[x][i].value);}if ((Welcome_doubleSelectRoleTemp.options.length > 0) && (! selected)) {Welcome_doubleSelectRoleTemp.options[0].selected = true;}}
</script></td>
</tr><tr><td colspan="2"><div align="right"><input type="submit" id="Welcome_0" value="Submit"/>
</div></td>
</tr></table></form></body>
</html>

welcome.jsp

welcome.jsp

<%@ page language="java" contentType="text/html; charset=US-ASCII"pageEncoding="US-ASCII"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Welcome Page</title>
</head>
<body>
<h3>User Details</h3>
User Name: <s:property value="name"></s:property><br>
<s:hidden name="password"></s:hidden>
About You: <s:property value="bio"></s:property><br>
Receiving Updates: <s:property value="receiveUpdates"></s:property><br>
Roles Selected: <s:property value="rolesSelect"/><br>
Role Checkbox Value: <s:property value="roleCheckbox"/><br>
Roles Radio Value: <s:property value="rolesRadio"/><br><br>
Double Select Role: <s:property value="doubleSelectRole"/><br>
Double Select Expertise: <s:property value="doubleSelectExpertise"/><br>
<h4>Thank You</h4></body>
</html>

A simple JSP page that is showing the values entered by the used in the form. The response html page looks like below image.

一个简单的JSP页面,显示表单中使用的用户输入的值。 响应html页面如下图所示。

Did you noticed the hidden tag, we can use this tag to generate hidden element in the html page. The name attribute corresponds to the java bean property of the action class.

您是否注意到了隐藏标签,我们可以使用此标签在html页面中生成隐藏元素。 name属性对应于操作类的java bean属性。

That’s all for Struts2 UI tags example project, you can download the project from below link and play around with different attributes available for different UI tags.

这就是Struts2 UI标签示例项目的全部内容,您可以从下面的链接下载该项目,并尝试使用可用于不同UI标签的不同属性。

Download Struts2 UI Tags Example Project下载Struts2 UI标签示例项目

翻译自: https://www.journaldev.com/2266/struts-2-ui-tags-form-checkbox-radio-select-submit

struts2 标签单选框

struts2 标签单选框_Struts 2 UI标签–表单,复选框,单选,选择,提交相关推荐

  1. php中得到复选框的数据的代码,表单复选框向PHP传输数据的代码

    表单复选框向PHP传输数据的代码 表单复选框就是checkbox 1.checkbox的应用 复制代码 代码如下: 2.由于我传输的是在php循环中产生的数组,因此value也要设成变量: for($ ...

  2. Layui表单复选框验证

    Layui表单复选框验证 近日由于项目原因使用layui框架进行开发,在做表单验证的时候苦于复选框验证问题找不到答案,于是作为小白的我换了一种思路,不采用官方提供的form-verify,而是采用在提 ...

  3. JS对象迭代、事件处理器、表单控件绑定、表单复选框、表单单选按钮

    JS对象迭代 知识点 v-for v-for 循环JS对象,把对象内容循环显示到页面上. <div id="myApp"><h1>JS对象迭代</h1 ...

  4. html构建复选框标签,什么标签用于在表单中构建复选框_HTML表单复选框INPUT标签...

    HTML表单复选框标签 在HTML的表单控件中,复选框也是经常使用的控件,它可以让用户选择打勾或不打勾.它使用的也是标签. 一.定义 标签用于表示文本框.密码框.单选框.复选框.文件上传框.普通按钮. ...

  5. ICheck表单复选框、单选框控件美化插件

    作用: 渲染并美化当前页面的复选框或单选框 响应复选框或单选框的点击事件 特点: 在不同浏览器(包括ie6+)和设备上都有相同的表现 - 包括 桌面和移动设备 支持触摸设备 - iOS.Android ...

  6. html表单复选框隐藏,ElementUI 表格部分复选框禁用或隐藏

    背景 我们在使用 element ui 的 Table 组件构建带复选框的表格时,我们希望根据条件禁用或者隐藏某行选择框.如下图所示: 解析 通过查看 ElementUI 官方文档 selectabl ...

  7. javaWeb表单复选框

    目录 HTML代码 JSP代码 如果用户名那不输入 直接提交 相应对象获取的就是空串 如果复选框不选直接提交 相应对象获取的就是NULL 容易产生空指针异常 HTML代码 <html> & ...

  8. 表单复选框提交到mysql_使用表单复选框设置Access数据库表字段

    这样做的一种方法是在Access中使用VBA.在Access中访问VBA控制台的方式是,在表单的设计视图中,右键单击复选框控件并选择" Build Event"从菜单中.确保您的控 ...

  9. html表单复选框样式,美化表单——自定义checkbox和radio样式

    如果你对本站比较观注的话,应该很清楚,前面就有这方面的介绍.因为大家都知道表单中的部分元素如果单单使用CSS是没办法完成的,所以最近花全力在学习这方面的制作.在本站有关于这样制作有好几个教程了,比如说 ...

  10. layui复选框怎么取值_layui获取checkbox复选框值

    获取layui表单复选框已选中的数据 HTML layui.form.checkbox 获取选中 复选框 开关关 开关开 立即提交 JS layui.use('form', function(){ v ...

最新文章

  1. 使用golang的for打印三角形
  2. 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-2
  3. LeetCode 105. 已知前序中序 求二叉树
  4. c语言1+2+3+4+5_C程序来计算系列1+(1 + 2)+(1 + 2 + 3)+(1 + 2 + 3 + 4)+ ... +(1 + 2 + 3 + ... + n)...
  5. 永和自适应官网代理系统模块V6.0.8
  6. 设置api密钥_我应该将我的API密钥设置多长时间?
  7. esp32查询剩余内存_SQL 查询语句先执行 SELECT?兄弟你认真的么?
  8. 想要更好的云基础设施管理!你检查IT工具集了吗?
  9. java退出登录_java实现注销登录
  10. Go语言实现的素数筛选程序
  11. 对Runtime的理解
  12. 我的CSDN博客下载器,下载博客文章保存为mht文件
  13. 使用U盘重装MacOS的简单步骤
  14. windows 编译n2n
  15. 谷歌账号--手机号无法验证
  16. 数据库原理:了解范式(1NF、2NF、3NF、BCNF),做例题快速弄懂
  17. 国赛mysql加固_2019 全国大学生信息安全竞赛创新能力实践赛3道Web Writeup
  18. 扩展easyUI样式,全新的easyUI体验样式
  19. 计算机课程体系改革,试论改革教学内容和考试方式构建计算机公共课程体系
  20. 升级android安全补丁,谷歌发布 2019 年 12 月的 Android 安全补丁

热门文章

  1. Key-Value Coding (KVC)
  2. pku1063 Flip and Shift严格证明
  3. [转载] Python学习(五)Numpy通用函数汇总
  4. verilog 中生成块的相关知识
  5. 9月我的第一次,新的感悟
  6. css标准流/非标准流 盒子模型
  7. Android Studio 创建不同分辨率的图标
  8. 开发常用技巧之css字体编码
  9. javascript 函数与对象
  10. python 连接sql server