暂且把以下两个JSP文件称呼为 -- post.jsp作为view conponent, save.jsp作为model conponent.
post.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%
request.setCharacterEncoding("GBK");
%>
<html>
<head>
<title>Test testing...</title>
<script language = "javascript">
var file = 'Save.txt'; // the txt file should be in the same folder of the jsp file.
var content;
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function getData(dataSource)
{
if(XMLHttpRequestObject) {
XMLHttpRequestObject.open("GET", dataSource);
XMLHttpRequestObject.onreadystatechange = function() // callback function
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) {
content = XMLHttpRequestObject.responseText;
document.getElementById('displayDiv').innerHTML = content;
}
}
XMLHttpRequestObject.send(null);
}
}
function edit() {
document.getElementById("displayDiv").style.display="none";
document.getElementById("editor").style.display="block";
document.getElementById("editor").value=content;
}
function save(dataSource) {
content = document.getElementById("editor").value;
document.getElementById("displayDiv").style.display="block";
document.getElementById("editor").style.display="none";
saveData(dataSource);
}
// save data to server side...
function saveData(dataSource)
{
if(XMLHttpRequestObject) {
XMLHttpRequestObject.open("POST", dataSource);
XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) {
document.getElementById("displayDiv").innerHTML = content ;
}
}
XMLHttpRequestObject.send("data=" + content);
}
}
</script>
</head>
<body onLoad="getData(file)">
<H1>Test demo</H1>
<form>
<input type = "button" value = "Edit the message" onclick = "edit()">
<div id="displayDiv" style=" "></div>
<input type="text" id="editor" style="display:none" /><br/>
<input type="button" value="Submit" onClick="save('Save.jsp')" />
</form>
</body>
</html>
save.jsp
<%@ page import="java.io.*" %>
<%
String fileName = "Save.txt";
String path = application.getRealPath("/");
String data = request.getParameter("data");
// System.out.println(data);
data = new String(data.getBytes("ISO-8859-1"),"GBK");
// System.out.println(data);
File file = new File(path + fileName);
Writer writer = null;
if (file.isDirectory()) {
return;
} else {
try {
writer = new OutputStreamWriter(new FileOutputStream(file));
writer.write(data);
writer.close();
//file.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//response.sendRedirect("ch02/index.html");
//response.sendRedirect(data);
%>
这样,在服务端先同目录下,创建一个数据文件Save.txt,以保存前端编辑的文本,从而不需要连接数据库。同时也注意到,如果仅仅把大段的文本保存到DB而并不存在其他结构化数据,也许抛弃DB启用file是一个不错的选择。
分享到:
相关推荐
这里笔者介绍一种简单可行的方法,不是在服务端而是利用前端的 JavaScript 就可以切换正体中文。 如下图,我们把切换按钮放在页脚(当然你也可以放置在“导航”或者其他更醒目的位置)。 由于页面假设设定均使用 ...
JavaScript简易版在线编辑器是一种基于Web的文本编辑工具,它允许用户在浏览器中编写、编辑和查看代码。这种编辑器通常由JavaScript编程语言构建,它提供了基础的代码高亮、语法检查以及简单的运行功能,方便初学者...
二维码(Quick Response Code)是一种二维条形码,用于存储各种信息,如网址、文本、联系人信息等。在服务端生成二维码是常见的应用场景,尤其在移动互联网和物联网领域。服务端生成二维码的优点在于可以动态控制...
- 发送和接收消息的示例代码,可以是文本、二进制数据或自定义格式。 5. **运行与测试**: - 编译并运行C++服务端程序,确保它能够正常监听和处理连接。 - 打开HTML5静态页面,通过浏览器与服务端建立WebSocket...
在开发WebSocket服务端程序时,开发者通常会用到如Node.js的ws库、Java的Jetty或Tomcat WebSocket支持、Python的Flask-SocketIO等库。这些库提供了方便的API,帮助处理连接管理、错误处理和数据编码解码。 在压缩包...
1. **接收请求**:客户端(如网页、应用程序)发送请求,包含要编码的数据(如URL、文本等)和服务端生成二维码的相关参数(如大小、颜色、纠错级别等)。 2. **数据编码**:服务端根据接收到的数据类型,选择合适...
2. **可定制性**:可以根据需求动态生成二维码,如包含不同的URL、文本、图片或条码数据。 3. **性能优化**:减轻了客户端的计算负担,尤其是对于低性能设备或移动网络环境。 4. **批量处理**:对于大量二维码的生成...
* 输出到HTML中的文本部分,必须做编码处理(HTML, URL, JS)。 * 可以使用HttpUtility的相关方法:HtmlEncode,HtmlAttributeEncode,UrlEncode,JavaScriptStringEncode。 四、Cookie 安全 * 不能将敏感数据直接...
可以考虑使用服务端语言(如Node.js)配合`docx`库,或者使用在线API(如Google Docs API)生成DOC文件,然后通过Ajax请求将JavaScript生成的数据发送到服务器进行处理。 7. **第三方库介绍**: - **jspdf**:用于...
7. **编码兼容**:考虑到不同系统和语言的编码差异,编辑器应能支持多种字符编码,避免乱码问题。 8. **错误检查与修复**:内置错误检测机制,能识别并提示文件中的错误或不一致,帮助用户修复问题。 9. **自定义...
CKeditor是一款广泛使用的富文本编辑器,它提供了丰富的文本格式化功能,使用户在网页上编辑内容时可以如同在桌面应用程序中一样方便。在CKeditor中,图片上传和浏览是其增强用户体验的重要特性之一。Java版本的...
在Android平台上,SSH(Secure Shell)服务端代码的实现是一个相对较复杂的任务,因为SSH主要用于提供安全的远程登录和命令行操作,通常与Linux或Unix系统关联。然而,由于Android系统基于Linux内核,因此也可以通过...
- 描述中提到内容是JSON格式,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在HTTP POST中,JSON常作为请求或响应体的数据格式,用于传递复杂结构...
4. **音视频编码解码**:视频服务器需要支持各种编解码器,如H.264、VP9或AV1进行视频编码,AAC或Opus进行音频编码,以兼容不同的设备和网络条件。 5. **即时通讯(IM)功能**:描述中提到"类似IM的服务器",意味着...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。返回的JSON对象结构如下: ```json { "result": "success/error", "device": { "code": "设备...
在JavaScript(JS)中加载Base64编码的图片是一种常见的技术,特别是在动态创建或处理图像时。Base64是一种用于将二进制数据转换为文本格式的方法,以便可以在HTML和JavaScript中安全地传递。以下是对这个主题的详细...
在JavaScript编程语言中,汉字转拼音是一项常见的需求,特别是在处理用户输入、文本分析或本地化应用时。这个小工具提供了一种方法来将汉字转换为其对应的汉语拼音,尽管它的实现可能相对简单,但对于理解基本原理和...
在本项目中,我们探讨的是一个基于Java编程语言构建的聊天程序,该程序包含了服务端和客户端的实现。Java作为一种跨平台的编程语言,因其强大的网络功能和丰富的类库,常被用于开发分布式应用程序,如聊天系统。让...
数据帧可能包含文本或二进制数据,且有相应的编码规则。 5. **错误处理与关闭连接**:WebSocket连接可能会因为网络问题、客户端关闭或服务器主动断开而中断。服务器需要监听错误事件,并在必要时优雅地关闭连接,...
PDF表单提交是一种常见的数据交互方式,特别是在企业级应用中,用于收集用户填写的数据并将其发送至服务端进行处理和存储。在这个“pdf表单提交-服务端接收处理显示.zip”压缩包中,包含了实现这一功能的相关资料。...