最简单的留言板

1.1 留言板的原理

先让我们来看看现实生活中留言板是如何工作的,想象这样一种情况:
你说好在家等你的女友,可是临时有事情要出门,于是你决定写一个留言,以免回来时被修理。
让我们仔细分析一下事情的经过:

1 构思留言,想一个巧妙的理由
2 写下留言
3 将留言贴到门上,这样你的女友才能看到

其实在网络中,留言板也是同样工作的:

1 在页面上写好留言
2 将留言保存下来
3 在适当的时候适当的地方向适当的人显示留言

下边是这个最简单的留言板工作方式的示意图:



1.2 留言板的实现

下面让我们来考虑这几个页面的实现。
POST.PHP很简单,它只需要一个From,就OK了。

<!--
///
/// POST.PHP: This web will submit the data to SAVE.php ///
///
-->
<html>
<form method="POST" action="SAVE.PHP">
<p>
题目:<input type="text" name="texttitle" size="65"></p>
<p>内容:</p>
<p><textarea rows="9" name="textcontent" cols="70"></textarea></p>
<p><input type="submit" value="提交" name="B1">
<input type="reset" value="重置" name="B2"></p>
</form>
</html>

如果你看不懂上边的Html代码,那就说明你对Html还不够熟悉,请先温习一下Html的语法。这段代码表示了一个这样的页面:



可以看到,上边的Html代码通过Form,将“题目”和“内容”传递给了页面SAVE.PHP;在SAVE.PHP中我们可以用$texttitle和$textcontent获得它们的值。
然后让我们进行第二步,“将留言保存下来”。
问题就在于如何将POST.PHP 传过来的两个变量保存下来。要想长时间的保存变量,有两种方法:保存成文件或者放入数据库里。对一个个人留言板来说,使用数据库有些大材小用的感觉,所以我们用文件的形式来保存数据。

下边是我们要用到的几个文件操作函数:

fopen
(PHP 3, PHP 4 >= 4.0.0)
fopen -- Opens file or URL
Description
int fopen ( string filename, string mode [, int use_include_path])

flock
(PHP 3>= 3.0.7, PHP 4 >= 4.0.0)
flock -- Portable advisory file locking
Description
bool flock ( int fp, int operation [, int wouldblock])


fwrite
(PHP 3, PHP 4 >= 4.0.0)

fwrite -- Binary-safe file write
Description
int fwrite ( int fp, string string [, int length])

fclose
(PHP 3, PHP 4 >= 4.0.0)

fclose -- Closes an open file pointer
Description
bool fclose ( int fp)

关于函数的具体阐述请查阅PHP手册,如果你还没有,请到http://www.php.net/distributions/manual/php_manual_en.chm下载。现在,我们就把留言存起来:

<?php 
///
// This web will save the words U leave.. //
///
$ft=fopen('words.txt',"a+"
); 
flock($ft,LOCK_EX
); 
$data=$texttitle."/n".$textcontent

fwrite($ft,$data
); 
$ok=fclose($ft
); 
if(
$ok) echo "save the txet successfully..."

?>

需要注意的是flock($ft,LOCK_EX)这一句并不是可有可无的,它在对文件进行写操作之前锁定了文件,这样就有效地避免了多个用户同时对该文件进行操作而出现的错误。看看目录里边,是不是多出来了一个名叫words.txt的文本文件呢?打开一看,果然是我们刚才存放的数据。
就这样,SAVE.PHP也实现了,接下来就是显示留言了,最简单地,你可以让ECHO.PHP直接显示words.txt,方法是使用框架或者重定向。
下面我们分别用框架和重定向的方法来实现ECHO.PHP
<!--
///
/// ECHO.PHP: Use a fram to show the file words.txt 
///
-->

<html>
<head>
<title>ECHO.PHP</title>
</head>
<frameset rows="100%,*" border="0" frameborder="0" framespacing="0" framecolor="#000000">
<frame src="words.txt" scrolling="auto" ></frameset><noframes>
<body></body>
</html>

由于IE把TXT文件当作HTML文件操作,所以直接把words.txt当作一个框架网页就可以了。

Note 有人认为这是IE的一个漏洞,因为你在网上浏览文本文件时,往往会放松警惕,不会想到文本文件居然可以和HTML文件一样,可以使用脚本来进行破坏活动。

如果用重定向来实现的话就需要用到JavaSvript了:
<!--

/// ECHO.PHP: Use Javascript to show the file words.txt 

-->
<script>
location="words.txt"
</script>


Note 当然重定向还有其他的方法,比如利用HTML文件的META标签来实现。

这样,我们就完成了一个最简单的留言板。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一个使用Spring MVC框架完成的简单留言板示例: 1. 首先创建一个Maven项目,添加Spring MVC和其他必要的依赖项。 2. 在web.xml文件中配置DispatcherServlet,指定Spring MVC的配置文件位置: ``` <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ``` 3. 创建一个Controller,处理留言板相关的请求: ``` @Controller public class MessageController { @Autowired private MessageService messageService; @RequestMapping("/") public String index(Model model) { List<Message> messages = messageService.getAllMessages(); model.addAttribute("messages", messages); return "index"; } @RequestMapping(value = "/add", method = RequestMethod.POST) public String addMessage(@RequestParam("name") String name, @RequestParam("content") String content) { Message message = new Message(name, content); messageService.addMessage(message); return "redirect:/"; } } ``` 4. 创建一个Service,处理留言板相关的业务逻辑: ``` @Service public class MessageService { private List<Message> messages = new ArrayList<Message>(); public List<Message> getAllMessages() { return messages; } public void addMessage(Message message) { messages.add(message); } } ``` 5. 创建一个Message实体类,用于存储留言信息: ``` public class Message { private String name; private String content; public Message(String name, String content) { this.name = name; this.content = content; } // getters and setters } ``` 6. 创建一个JSP页面,用于显示留言板的内容: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>留言板</title> </head> <body> <h1>留言板</h1> <form action="${pageContext.request.contextPath}/add" method="post"> <p> <label for="name">姓名:</label> <input type="text" name="name" id="name" required> </p> <p> <label for="content">留言:</label> <textarea name="content" id="content" required></textarea> </p> <p> <button type="submit">提交</button> </p> </form> <hr> <c:forEach items="${messages}" var="message"> <p>${message.name} 说:${message.content}</p> </c:forEach> </body> </html> ``` 7. 创建一个Spring MVC的配置文件,配置视图解析器和其他必要的组件: ``` <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> ``` 8. 最后,创建一个JSP页面,用于显示留言板的内容: ``` /WEB-INF/views/index.jsp ``` 这样,一个简单留言板就完成了。你可以通过访问http://localhost:8080/来查看留言板的内容,并提交自己的留言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值