<commit_before>
# jssp
==================
尽管 `d2js 前端(html + ajax) + d2js 后端` 可以满足大部分应用场景，还是有很多场景需要页面在服务器端就绪后输出，不宜使用纯 ajax 技术。

jssp 是 JavaScript Server Page 的简称，是建构于 d2js 后端技术上的一种服务器端页面技术，运行于 jdk1.8以上 + servlet3.0 容器，采用 js 作为服务器端编程语言，并可以使用所有 d2js 后端技术，如 `query, queryRow, travel, doTransaction`等便利快捷的 d2js 函数。

在 http://jssp.sourceforge.net/ 也有一个称为 jssp 的开源项目。最早有 jssp 想法后，发现了该工程，并曾使用过其部分代码，到 jdk8 后，已经和该项目无关。

## 基本对象

与 jsp 一样，jssp 可以使用 `request`, `response`, `session`, `out`, `application` 等几个常用对象，并且这些对象已经对 js 语言做了适配。

下面新建3个页面，一个为 a.html, 一个为 b.jssp, 一个为 c.jssp

a.html
```html
<html>
<head>
	<title>信息采集</title>
	<meta charset="utf-8">
</head>
<body><commit_msg>Update jssp.md<commit_after>
# jssp
-----
尽管 `d2js 前端(html + ajax) + d2js 后端` 可以满足大部分应用场景，还是有很多场景需要页面在服务器端就绪后输出，不宜使用纯 ajax 技术。

jssp 是 JavaScript Server Page 的简称，是建构于 d2js 后端技术上的一种服务器端页面技术，运行于 jdk1.8以上 + servlet3.0 容器，采用 js 作为服务器端编程语言，并可以使用所有 d2js 后端技术，如 `query, queryRow, travel, doTransaction`等便利快捷的 d2js 函数。

在 http://jssp.sourceforge.net/ 也有一个称为 jssp 的开源项目。最早有 jssp 想法后，发现了该工程，并曾使用过其部分代码，到 jdk8 后，已经和该项目无关。

## 基本对象

与 jsp 一样，jssp 可以使用 `request`, `response`, `session`, `out`, `application` 等几个常用对象，并且这些对象已经对 js 语言做了适配。

下面新建3个页面，一个为 a.html, 一个为 b.jssp, 一个为 c.jssp

a.html
```html
<html>
<head>
	<title>信息采集</title>
	<meta charset="utf-8">
</head>
<body>
{'fraction_non_alphanumeric': 0.15060240963855423, 'fraction_numerical': 0.018072289156626505, 'mean_word_length': 5.645, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7523151', 'n_tokens_mistral': 866, 'n_tokens_neox': 942, 'n_words': 138}