在线书签的应用代码

用mvc的设计模式来实现的

package cc.openhome.controller;

import cc.openhome.model.Bookmark;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AddBookmark extends HttpServlet {
private String SUCCESS_VIEW = "success.view";
private String ERROR_VIEW = "error.view";

@Override
public void init() throws ServletException {
super.init();
if(this.getInitParameter("SUCCESS") != null) {
SUCCESS_VIEW = this.getInitParameter("SUCCESS");
}
if(this.getInitParameter("ERROR") != null) {
ERROR_VIEW = this.getInitParameter("ERROR");
}
}

@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String url = request.getParameter("url");
String title = request.getParameter("title");
String category = request.getParameter("category");
String newCategory = request.getParameter("newCategory");

List<String> errors = new ArrayList<String>();
if (url == null || url.length() == 0) {
errors.add("网址不能空白");
}
if (title == null || title.length() == 0) {
errors.add("请输入网页标题");
}
if ((category == null || category.length() == 0) &&
(newCategory == null || newCategory.length() == 0)) {
errors.add("请设置网页分类");
}

if (errors.size() != 0) {
request.setAttribute("errors", errors);
request.getRequestDispatcher(ERROR_VIEW)
.forward(request, response);
} else {
url = url.trim();
title = title.trim();
if(newCategory != null) {
newCategory = newCategory.trim();
if(newCategory.length() != 0) {
category = newCategory;
}
}
else {
category = category.trim();
}

Bookmark bookmark = new Bookmark(url, title, category);
List<Bookmark> bookmarks = (List<Bookmark>)
getServletContext().getAttribute("bookmarks");
bookmarks.add(bookmark);
request.setAttribute("bookmark", bookmark);

List<String> categories = (List<String>)
getServletContext().getAttribute("categories");
if(!categories.contains(category)) {
categories.add(category);
}

request.getRequestDispatcher(SUCCESS_VIEW)
.forward(request, response);
}
}
}

package cc.openhome.model;

public class Bookmark {
private String url;
private String title;
private String category;

public Bookmark(String url, String title, String category) {
this.url = url;
this.title = title;
this.category = category;
}

public String getCategory() {
return category;
}

public void setCategory(String category) {
this.category = category;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}
}

package cc.openhome.view;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class AddForm extends HttpServlet {

protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

out.println("<html>");
out.println(" <head>");
out.println(" <title>添加书签</title>");
out.println(" <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");
out.println(" </head>");
out.println(" <body>");

List errorList = (List) request.getAttribute("errors");
if (errorList != null) {
out.println("<h1>添加书签失败</h1>");
out.println("<ul style=\"color: rgb(255, 0, 0);\">");
Iterator<String> errors = errorList.iterator();
while (errors.hasNext()) {
out.println(" <li>" + errors.next() + "</li>");
}
out.println("</ul>");
}

out.println("<form method=\"post\" action=\"add.do\">网址");
if(request.getParameter("url") == null) {
out.println("&nbsp;http:// <input name=\"url\"><br>");
}
else {
out.println("&nbsp;http:// <input name=\"url\" value=\"" +
request.getParameter("url") + "\"><br>");
}
if(request.getParameter("title") == null) {
out.println("网页名称:<input name=\"title\"><br>");
}
else {
out.println("网页名称:<input name=\"title\" value=\"" +
request.getParameter("title") + "\"><br>");
}

out.println("分  类:");
out.println("<select name=\"category\">");

List<String> categories = (List<String>)
getServletContext().getAttribute("categories");
Iterator<String> iterator = categories.iterator();
while (iterator.hasNext()) {
String category = iterator.next();
out.println("<option value=\"" + category + "\">" + category + "</option>");
}

out.println(" </select>");
out.println("添加分类:<input type=\"text\" name=\"newCategory\" value=\"\">");
out.println(" <br>");
out.println(" <input value=\"送出\" type=\"submit\"><br>");
out.println(" </form>");
out.println(" </body>");
out.println("</html>");

out.close();
}

protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}

package cc.openhome.view;

import cc.openhome.model.Bookmark;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ListBookmark extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<html>");
out.println("<head>");
out.println("<meta content=\"text/html; UTF-8\" http-equiv=\"content-type\">");
out.println("<title>查看线上书签</title>");
out.println("</head>");
out.println("<body>");
out.println("<table style=\"text-align: left; width: 100%;\" border=\"0\" >");
out.println(" <tbody>");
out.println(" <tr>");
out.println(" <td style=\"background-color: rgb(51, 255, 255);\">网页</td>");
out.println(" <td style=\"background-color: rgb(51, 255, 255);\">分类</td>");
out.println(" </tr>");
List<Bookmark> bookmarkList = (List<Bookmark>)
getServletContext().getAttribute("bookmarks");
Iterator<Bookmark> bookmarks = bookmarkList.iterator();
while(bookmarks.hasNext()) {
Bookmark bookmark = bookmarks.next();
out.println(" <tr>");
out.println(" <td><a href=\"http://" +
bookmark.getUrl() + "\">" +
bookmark.getTitle() + "</a></td>");
out.println(" <td>" +
bookmark.getCategory() + "</td>");
out.println(" </tr>");
}

out.println(" </tbody>");
out.println("</table>");
out.println("</body>");
out.println("</html>");
out.close();
}
}

package cc.openhome.view;

import cc.openhome.model.Bookmark;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Success extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Bookmark bookmark = (Bookmark) request.getAttribute("bookmark");
out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<html>");
out.println("<head>");
out.println(" <meta content=\"text/html; charset=UTF-8\" http-equiv=\"content-type\">");
out.println(" <title>添加书签成功</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>添加书签成功</h1>");
out.println("<ul>");
out.println(" <li>网址:http://" + bookmark.getUrl() + "</li>");
out.println(" <li>名称:" + bookmark.getTitle() + "</li>");
out.println(" <li>分类:" + bookmark.getCategory() + "</li>");
out.println("</ul>");
out.println("<a href=\"index.html\">返回首页</a>");
out.println("</body>");
out.println("</html>");

out.close();
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}

package cc.openhome.web;

import cc.openhome.model.Bookmark;
import java.io.*;
import java.util.*;
import java.util.logging.*;
import javax.servlet.*;

public class BookmarkInitializer implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
BufferedReader reader = null;
try {
ServletContext context = sce.getServletContext();
String bookmarkFile = context.getInitParameter("BOOKMARK");
reader = new BufferedReader(new InputStreamReader(
context.getResourceAsStream(bookmarkFile), "UTF-8"));
List<Bookmark> bookmarks = new LinkedList<Bookmark>();
List<String> categories = new LinkedList<String>();
String input = null;
while ((input = reader.readLine()) != null) {
String[] tokens = input.split(",");
Bookmark bookmark = new Bookmark(
tokens[0], tokens[1], tokens[2]);
bookmarks.add(bookmark);
if(!categories.contains(tokens[2])) {
categories.add(tokens[2]);
}
}

context.setAttribute("bookmarks", bookmarks);
context.setAttribute("categories", categories);
} catch (IOException ex) {
Logger.getLogger(BookmarkInitializer.class.getName())
.log(Level.SEVERE, null, ex);
} finally {
try {
reader.close();
} catch (IOException ex) {
Logger.getLogger(BookmarkInitializer.class.getName())
.log(Level.SEVERE, null, ex);
}
}
}

public void contextDestroyed(ServletContextEvent sce) {
}
}

bookmakers.txt

doc.openhome.cc,學習筆記,程式設計
www.csdn.net,格BLOG,部落格
twitter.com/catarpillar,格Twitter,Twitter

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>BOOKMARK</param-name>
<param-value>/WEB-INF/bookmarks.txt</param-value>
</context-param>
<listener>
<listener-class>cc.openhome.web.BookmarkInitializer</listener-class>
</listener>
<servlet>
<servlet-name>ListBookmark</servlet-name>
<servlet-class>cc.openhome.view.ListBookmark</servlet-class>
</servlet>
<servlet>
<servlet-name>AddBookmark</servlet-name>
<servlet-class>cc.openhome.controller.AddBookmark</servlet-class>
<init-param>
<param-name>SUCCESS</param-name>
<param-value>success.view</param-value>
</init-param>
<init-param>
<param-name>ERROR</param-name>
<param-value>add.view</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>Success</servlet-name>
<servlet-class>cc.openhome.view.Success</servlet-class>
</servlet>
<servlet>
<servlet-name>AddForm</servlet-name>
<servlet-class>cc.openhome.view.AddForm</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ListBookmark</servlet-name>
<url-pattern>/list.view</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AddBookmark</servlet-name>
<url-pattern>/add.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Success</servlet-name>
<url-pattern>/success.view</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AddForm</servlet-name>
<url-pattern>/add.view</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

html的实现的

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>线上书签</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>线上书签功能菜单</h1>
<ul>
<li><a href="list.view">查看书签</a></li>
<li><a href="add.view">添加书签</a></li>
</ul>
</body>
</html>

如何来实现其与数据库的连接,这是相当重要的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值