2024-08-08

HTML、XHTML和HTML5都是用于创建网页的标准语言,但它们有不同的特点和用途。

  1. HTML (Hypertext Markup Language):
  • 最常用的标准语言。
  • 不是严格的XML形式,容错性较高。
  • 基本语法是开放的,不需要, 例如结束标签。
  1. XHTML (Extensible Hypertext Markup Language):
  • 设计来兼容HTML,同时遵守XML规则。
  • 严格的XML语法,更适合机器解析。
  • 需要正确的闭合标签,例如。
  • 不支持部分属性,如 alignwidth
  1. HTML5 (Hypertext Markup Language 5):
  • 最新的HTML标准。
  • 引入了新的语义标签和API。
  • 支持画布(Canvas)、视频(Video)和音频(Audio)。
  • 表单控件有日期选择器、颜色选择器等。

对比这三者的基本语法和特点,以下是一个简单的HTML5页面示例:




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HTML5 Example</title>
</head>
<body>
    <h1>Welcome to HTML5</h1>
    <p>This is a paragraph.</p>
    <video controls>
        <source src="movie.mp4" type="video/mp4">
        Your browser does not support the video tag.
    </video>
</body>
</html>

这个示例展示了HTML5的基本结构,包括文档类型声明、页面标题、字符集定义、HTML元素等,还包含了一个视频嵌入。这是一个简洁而现代的网页结构,适用于现代网页设计。

2024-08-08

HTML表单和输入元素是构建交互式网页的基础。以下是一个简单的HTML表单示例,包含了不同类型的输入元素:




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Simple Form</title>
</head>
<body>
    <form action="/submit-form" method="post">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required>
 
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
 
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required>
 
        <label for="age">Age:</label>
        <input type="number" id="age" name="age" min="1" max="100">
 
        <input type="submit" value="Submit">
    </form>
</body>
</html>

这个表单包含了文本输入、电子邮件输入、密码输入、数字输入和提交按钮。每个输入字段都有一个关联的label,以提高可访问性。required属性用于强制字段在提交表单之前必须填写,type="number"输入还设置了最小值和最大值的限制。当用户填写完表单并点击提交按钮时,表单数据会通过POST方法发送到服务器上的/submit-form路径。

2024-08-08

HTML是用于创建网页的标准标记语言。以下是一些常用的HTML标签:

  1. <!DOCTYPE html>:HTML5标准网页声明。
  2. <html></html>:HTML文档的开始和结束标签。
  3. <head></head>:包含了文档的元数据,如<title>、<meta>、<link>等。
  4. <title></title>:定义了网页的标题,显示在浏览器的标题栏上。
  5. <body></body>:包含了网页的可见部分,所有的用户可见内容都应放在这里。
  6. <h1></h1> to <h6></h6>:定义标题,<h1>最重要,<h6>最不重要。
  7. <p></p>:定义一个段落。
  8. <a href=""></a>:定义一个超链接,href属性指定链接的目标地址。
  9. <img src="" alt="">:插入一张图片,src属性指定图片的路径,alt属性提供图片的替代文本。
  10. <ul></ul>:无序列表,每个列表项用<li>表示。
  11. <ol></ol>:有序列表,每个列表项用<li>表示。
  12. <div></div>:定义了文档的一个区块,或者用于组合其他HTML元素。
  13. <span></span>:用于组合文档中的行内元素。
  14. <form></form>:创建HTML表单,用于用户输入。
  15. <input>:用于收集用户信息,type属性定义不同的输入类型(如text, radio, checkbox, submit等)。
  16. <label>:定义了<input>元素的标签,提供了可见的标签说明。
  17. <table></table>:定义表格,<tr>定义行,<th>定义表头,<td>定义单元格。
  18. <button>:定义一个按钮。

示例代码:




<!DOCTYPE html>
<html>
<head>
    <title>示例页面</title>
</head>
<body>
    <h1>欢迎来到我的网站</h1>
    <p>这是一个段落。</p>
    <a href="https://www.example.com">点击这里访问我的主页</a>
    <img src="image.jpg" alt="示例图片">
    <ul>
        <li>列表项1</li>
        <li>列表项2</li>
    </ul>
    <form action="submit_page.php" method="post">
        <label for="name">名字:</label>
        <input type="text" id="name" name="name">
        <input type="submit" value="提交">
    </form>
    <table>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
        </tr>
        <tr>
            <td>张三</td>
            <td>28</td>
        </tr>
    </table>
    <button type="button">点击我</button>
</body>
</html>

这个示例展示了如何创建一个简单的网页,包含了文本、图片、链接、列表、表单、表格和按钮等元素。

2024-08-08

HTML是用于创建网页的标准标记语言,全称为Hyper Text Markup Language。HTML不是一种编程语言,而是一种标记语言,标记语言是一套标签,通过这些标签可以让你的网页包含各种内容,比如文字、图片、音频、视频等。

以下是一些常用的HTML标签:

  1. <html>:这是一个根元素,所有的网页内容都应该包含在这个元素内。
  2. <head>:这个元素用于定义文档的头部,它可以包含文档的标题、编码类型、样式等信息。
  3. <title>:定义文档的标题,它会显示在浏览器的标题栏上。
  4. <body>:这个元素包含文档的主体内容,即用户可见的部分。
  5. <h1><h6>:定义标题,<h1>定义最大的标题,<h6>定义最小的标题。
  6. <p>:定义一个段落。
  7. <a>:定义一个超链接,属性href用于指定链接的目标地址。
  8. <img>:定义一个图像,属性src用于指定图像的来源。
  9. <div>:定义文档的一个区块或节,常用于布局。
  10. <span>:用于对文档中的行内元素进行组合。

示例代码:




<!DOCTYPE html>
<html>
<head>
    <title>我的第一个网页</title>
</head>
<body>
    <h1>欢迎来到我的网页</h1>
    <p>这是一个段落。</p>
    <a href="https://www.example.com">点击这里访问我的主页</a>
    <img src="image.jpg" alt="一张图片">
</body>
</html>

这段代码创建了一个简单的网页,包含标题、段落、链接和一张图片。

2024-08-08

在Web开发中,v-html 指令用于设置元素的 innerHTML。然而,如果不正确地使用,它可能会导致一个安全问题,称为“脚本注入”或“XSS”(跨站脚本攻击)。

脚本注入问题解释:

如果你使用 v-html 来插入任何用户可控的内容,那么攻击者可以通过提交恶意脚本,将这些脚本嵌入到你的网页中。攻击者可以利用这些脚本来获取用户的敏感信息,如cookie、session tokens等。

解决方法:

  1. 永远不要使用 v-html 来插入不受信任的内容。
  2. 如果你需要插入HTML,请考虑使用其他方法,如使用 v-bind:inner-text 来显示纯文本,或使用组件来显示复杂的数据。
  3. 对于完全不受信任的内容,请使用库或工具,如DOMPurify,来清理内容,确保没有恶意脚本可以执行。
  4. 监控你的应用程序,一旦发现脚本注入问题,立即进行修复并发布安全更新。

示例代码:




// 使用DOMPurify来清理内容
import { DOMPurify } from 'dompurify';
 
// ...
 
methods: {
  safeHtml(dirtyString) {
    return DOMPurify.sanitize(dirtyString);
  }
}
 
// 在模板中使用方法
<div v-html="safeHtml(dirtyContent)"></div>

在这个例子中,dirtyContent 是用户可控的内容,safeHtml 方法使用了 DOMPurify 来清理内容,确保插入的HTML是安全的。这样可以避免脚本注入问题。

2024-08-08



// 引入StyleExtHTMLWebpackPlugin插件
const StyleExtHTMLWebpackPlugin = require('style-ext-html-webpack-plugin');
 
module.exports = {
  // Webpack配置...
  plugins: [
    // 使用StyleExtHTMLWebpackPlugin插件
    new StyleExtHTMLWebpackPlugin({
      // 插件选项配置
    }),
    // ...其他插件
  ],
  // ...其他配置
};

这段代码演示了如何在Webpack配置文件中引入并使用style-ext-html-webpack-plugin插件。在plugins数组中实例化插件对象,并可以传入相关选项进行配置。这样做可以帮助开发者在打包过程中自动将生成的样式文件扩展名修改为.wxss,适用于开发微信小程序时的样式处理。

2024-08-08

以下是一个简单的HTML静态页面代码示例,包括了基本的HTML结构和一些CSS样式:




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>静态页面示例</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 20px;
            background-color: #f1f1f1;
        }
        .header {
            background-color: #333;
            color: white;
            padding: 10px 0;
            text-align: center;
        }
        .content {
            margin: 20px 0;
            padding: 20px;
            background-color: white;
        }
        .footer {
            background-color: #333;
            color: white;
            text-align: center;
            padding: 10px 0;
            position: absolute;
            bottom: 0;
            width: 100%;
        }
    </style>
</head>
<body>
 
<div class="header">
    <h1>我的静态页面</h1>
</div>
 
<div class="content">
    <p>这是一个简单的静态页面示例。</p>
    <!-- 页面内容 -->
</div>
 
<div class="footer">
    <p>版权所有 &copy; 2023</p>
</div>
 
</body>
</html>

这段代码创建了一个简单的网页,包含头部、内容区域和底部信息。使用了CSS样式来增强页面的视觉效果,并且保持了良好的语义结构。

2024-08-08

以下是一个简单的个人介绍网页模板的示例代码:




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>个人介绍</title>
    <style>
        body { font-family: Arial, sans-serif; }
        .header { text-align: center; padding: 50px; }
        .navigation { text-align: center; padding: 20px; }
        .content { text-align: center; padding: 50px; }
        .footer { text-align: center; padding: 50px; }
    </style>
</head>
<body>
 
<div class="header">
    <h1>欢迎来到我的个人介绍</h1>
</div>
 
<div class="navigation">
    <a href="index.html">主页</a> |
    <a href="about.html">关于我</a> |
    <a href="contact.html">留言</a>
</div>
 
<div class="content">
    <h2>个人简历</h2>
    <p>这里是我的个人简历...</p>
</div>
 
<div class="footer">
    <p>版权所有 &copy; 2023 我的网站</p>
</div>
 
</body>
</html>

这个简单的HTML模板包括了一个个人介绍页面的基本元素:头部(Header)、导航(Navigation)、内容区域(Content)和底部(Footer)。样式是通过内联的<style>标签定义的,以保持代码的简洁性。这个模板可以作为创建更复杂个人网站的起点。

2024-08-08

由于这个查询涉及到的内容较多,我将给出核心的数据库连接和查询代码示例。




// 导入所需的类库
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
 
@Controller
public class PerformanceController {
 
    // 查询员工绩效信息
    @RequestMapping(value = "/getPerformance", method = RequestMethod.GET)
    public @ResponseBody String getPerformance(HttpServletRequest request) {
        String empId = request.getParameter("empId");
        String sql = "SELECT * FROM performance WHERE emp_id = ?";
 
        try (
                Connection conn = getConnection();
                PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql);
        ) {
            pstmt.setString(1, empId);
            ResultSet rs = pstmt.executeQuery();
 
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
            while (rs.next()) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("id", rs.getInt("id"));
                map.put("empId", rs.getString("emp_id"));
                map.put("kpi", rs.getString("kpi"));
                map.put("kra", rs.getString("kra"));
                map.put("weight", rs.getInt("weight"));
                map.put("score", rs.getInt("score"));
                list.add(map);
            }
            return JSON.toJSONString(list);
        } catch (Exception e) {
            e.printStackTrace();
            return "{\"error\":\"" + e.getMessage() + "\"}";
        }
    }
 
    // 获取数据库连接
    private Connection getConnection() throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/your_database_name";
        String username = "your_username";
        String password
2024-08-08



// 导入必要的模块
const express = require('express');
const path = require('path');
const fs = require('fs');
const app = express();
 
// 设置静态文件目录
app.use(express.static('public'));
 
// 导入HTML文件
fs.readFile('routes/index.html', 'utf8', (err, html) => {
  if (err) {
    console.error('读取文件出错:', err);
    return;
  }
  app.get('/', (req, res) => {
    res.send(html);
  });
});
 
// 设置Nginx反向代理
app.all('/api/*', (req, res) => {
  // 假设Nginx运行在localhost的80端口
  req.pipe(request(req)).pipe(res);
});
 
// 设置CORS头部支持跨域请求
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  next();
});
 
// 监听3000端口
app.listen(3000, () => {
  console.log('服务器运行在 http://localhost:3000/');
});

这段代码示例展示了如何在Node.js的Express框架中设置静态文件目录、导入HTML文件、配置Nginx反向代理以及处理CORS问题。在实际开发中,这些技术和实践都非常有用,并且是构建现代Web应用的标准做法。