java 渲染解读

本文介绍了Java渲染过程,即Tomcat如何将JSP编译为Servlet,并以HTML形式返回给浏览器。渲染过程可以理解为服务器将jsp转换为html,以便在浏览器中显示。此外,还探讨了HTML渲染的基本概念,涉及DOM树构建和.js、.css文件的应用。文中给出了代码示例,展示了如何通过.js和.css文件对HTML节点进行渲染,以实现页面效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java 渲染解读

解读

  • 就是把tomcat把jsp编译成servlet,而baiservlet会将以HTML格式返回du给浏览zhi器,这就是渲染。渲染可以简dao单理解为:因为浏览器不能执行并显示jsp文件,所以tomcat服务器将jsp文件渲染成html文件,以便于能够在浏览器中将http url请求的结果进行显示。
  • 渲染:baiHTML语言用浏览器解析,首先将.html文件加载进内存du,生成一颗DOM树,然后根据标记中zhi引用的.js和.css文件,来dao对节点进行渲染 生成一个完整,绚丽的页面显示在浏览器显示。

代码示例

  • 1.例:<head>标记中用<link><script>引用了俩文件,渲染就是借助这俩个文件对html中的节点增加效果。HTML主要的目的是为了使页面产生绚丽的效果,为了显示。相比xml文件只是作为数据交换,存储和作为配置文件,重心不在显示。
<html>
<head>
<title>CRS</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<link rel="stylesheet" type="text/css" href=".css"/>
<script src=".js" type="text/javascript" language="javascript"></script>
</head>
<body>
</body>
</html>
  • 2.若要实现运行结果
    张三,男,1990年出生,2012年毕业于清华大学。
    cost time:65ms
    张三,男,1990年出生,2012年毕业于清华大学。
    cost time:161ms
    代码如下
package com.hdwang;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by hdwang on 2017/12/19.
 */
public class MyTemplate {

 public static void main(String[] args){

  String template = "${name},${sex},${birthYear}年出生,${graduateYear}年毕业于${university}。";
  Map<String,String> params = new HashMap<>();
  params.put("name","张三");
  params.put("sex","男");
  params.put("birthYear","1990");
  params.put("graduateYear","2012");
  params.put("university","清华大学");

  long start = System.currentTimeMillis();

  for(int i=0;i<10000;i++) {
   String result = render(template, params);

   if(i==9999) {
    System.out.println(result);
   }
  }
  long end = System.currentTimeMillis();


  System.out.println("cost time:"+(end-start)+"ms");

  start = System.currentTimeMillis();
  for(int i=0;i<10000;i++) {
   String result = render2(template, params);

   if(i==9999) {
    System.out.println(result);
   }
  }
  end = System.currentTimeMillis();
  System.out.println("cost time:"+(end-start)+"ms");

 }

 public static String render(String template,Map<String,String> params){
  //使用builder拼接,比string相加提高不少效率
  StringBuilder builder = new StringBuilder();

  //定义控制变量
  boolean $Begin = false;
  boolean paramBegin = false;
  //boolean paramEnd = false;
  StringBuilder key = null;

  //循环匹配
  for(int i=0;i<template.length();i++){
   char c = template.charAt(i);
   //开始标识
   if(c=='$'){
    $Begin = true;
   }
   if($Begin && c=='{'){
    paramBegin = true;
    builder.deleteCharAt(builder.length()-1); //删除添加的$字符

    key = new StringBuilder();
    continue;
   }

   //参数key
   if(paramBegin && c!='}'){
    if(c=='{'){
     System.out.println("模板格式错误!位置:"+i);
    }else {
     key.append(c);
    }
    continue;
   }

   //结束标识
   if(paramBegin && c=='}'){
    //paramEnd = true;
    //拼接参数key对应的值
    builder.append(params.get(key.toString()));

    //重置控制变量
    $Begin = false;
    paramBegin = false;
    //paramEnd = false;
    continue;
   }

   //默认情况
   builder.append(c); //添加字符
  }

  return builder.toString();
 }

 public static String render2(String template,Map<String,String> params){
  for(Map.Entry<String,String> entry:params.entrySet()){
   String key = entry.getKey();
   String value = entry.getValue();
   template = template.replace("${"+key+"}",value);
  }
  return template;
 }
}

定义参考文档
代码参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值