虽然只是一个菜鸟版的百度文库,并且也没做装饰css什么的,但是用了我一个星期的课余时间。。。
遇到很多小困难,但是觉得收获还是挺大的。。意义非凡啊。。。一开始是身心疲惫,现在挺开心的。。。
把学到的知识好好的用上了。。。javase里面的集合,IO流,单例设计模式,jsp里面的jstl,EL表达式,servlet里面的session,,还有 javabean。。。还有对MyEclipse的使用。。。这期间注册遇到很多问题,最后我用输出语句,输出username还有集合list的个数,就解决了。。怪不得老师说,输出语句很强大。。简直就是神句。。。
工程名字叫BaiDuWenKu0.5,
在F盘放了两篇文章:劝学.txt 还有师说.txt模拟百度的资源
一共两个包,com.jingtian.controller和com.jingtian.javabean
controller包里面有Login.java Register.java Judge.java LoginOut.java SelectBooks.java
javabean包里面有User.java Db.java Book.java
jsp有index.jsp index2.jsp login.jsp register.jsp book.jsp book.jsp
下面是代码
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.jingtian.javabean.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'selectBook.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
欢迎您,${user.username}
<br>
<a
href="${pageContext.request.contextPath}/servlet/Judge?function=login">登录</a>
<a
href="${pageContext.request.contextPath}/servlet/Judge?function=register">注册</a>
<a href="${pageContext.request.contextPath}/servlet/LoginOut">注销</a>
<form method="post"
action="${pageContext.request.contextPath}/servlet/SelectBook">
<!-- 路径 -->
<tr>
<td>书名:<input type="text" name="bookName" value="劝学"> <input
type="submit" value="提交"></td>
</tr>
</form>
<%
out.write("sdfdsfddd");
out.write(request.getContextPath());
%>
<%
List<User>list=(ArrayList)Db.getAll();
out.write(list.size());
session.setAttribute("list", list);
//把模仿数据库的类内容放在session里面的list里面
%>
</body>
</html>
index2.jsp
和index.jsp一模一样,因为模仿数据库的类里面的list只能初始化一次,而首页要被多次访问得到,所以就用了替身index2.jsp当首页
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.jingtian.javabean.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'selectBook.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
欢迎您,${user.username}
<br>
<a
href="${pageContext.request.contextPath}/servlet/Judge?function=login">登录</a>
<a
href="${pageContext.request.contextPath}/servlet/Judge?function=register">注册</a>
<a href="${pageContext.request.contextPath}/servlet/LoginOut">注销</a>
<form method="post"
action="${pageContext.request.contextPath}/servlet/SelectBook">
<!-- 路径 -->
<tr>
<td>书名:<input type="text" name="bookName" value="劝学"> <input
type="submit" value="提交"></td>
</tr>
</form>
</body>
</html>
Judge.java
一方面练习传值,一方面通过judge这个枢纽来控制往哪重定向
package com.jingtian.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.jingtian.javabean.Db;
import com.jingtian.javabean.User;
public class Judge extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String function=request.getParameter("function");
if(function.equals("login"))
{
response.sendRedirect("" + request.getContextPath()+ "/login.jsp");
}
else
{
response.sendRedirect("" + request.getContextPath()+ "/register.jsp");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
Login.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆界面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/servlet/Login"
method="post">
帐号:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
Login.java
package com.jingtian.controller;
import java.io.IOException;
import java.io.OutputStream;
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;
import javax.servlet.http.HttpSession;
import com.jingtian.javabean.User;
import com.jingtian.javabean.Db;
public class Login extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Content-type", "text/html;charset=UTF-8");
OutputStream out = response.getOutputStream();
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession(false);
ArrayList<User> list = (ArrayList) session.getAttribute("list");
for (User user : list) {
if (user.getUsername().equals(username)
&& user.getPassword().equals(password)) {
session.setAttribute("user", user);// 登录成功,将用户数据放入到Session中
response.sendRedirect("" + request.getContextPath()+ "/index2.jsp");
//request.getRequestDispatcher("" + request.getContextPath()+ "/index2.jsp").forward(request, response);
return;// 进行重定向,并且下面的代码不再执行
}
}
out.write("您的用户名或密码错误".getBytes("UTF-8"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
register.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册界面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/servlet/Register"
method="post">
帐号:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="注册">
</form>
</body>
</html>
Register.java
package com.jingtian.controller;
import java.io.IOException;
import java.io.OutputStream;
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;
import javax.servlet.http.HttpSession;
import com.jingtian.javabean.Db;
import com.jingtian.javabean.User;
public class Register extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Content-type", "text/html;charset=UTF-8");
OutputStream out = response.getOutputStream();
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession(false);
ArrayList<User> list = (ArrayList) session.getAttribute("list");
for (User user : list) {
if (user.getUsername().equals(username)) {
out.write("您注册的用户名已经存在".getBytes("UTF-8"));
return;
}
}
list.add(new User(username,password));
session.setAttribute("list", list);
response.sendRedirect("" + request.getContextPath()+ "/login.jsp");
//request.getRequestDispatcher("" + request.getContextPath()+ "/login.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
LoginOut.java
package com.jingtian.controller;
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;
import javax.servlet.http.HttpSession;
public class LoginOut extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(false);// 防止创建Session
if (session == null) {
response.sendRedirect(""+request.getContextPath()+"/index2.jsp");
return;
}
session.removeAttribute("user");
response.sendRedirect(""+request.getContextPath()+"/index2.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
book.jsp
<%@ page language="java" import="java.util.*" import="java.io.*"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<style type="text/css">
textarea {
width: 900px;
height: 300px;
display: block;
overflow: scroll;
}
</style>
</head>
<body>
<jsp:useBean id="book" class="com.jingtian.javabean.Book"
scope="page"></jsp:useBean>
<jsp:setProperty name="book" property="name" value="${bookName}"/>
<h2 align="right">用户名:${user.username}</h2>
<table border="10" width="70%" height="80%" align="center">
<caption><h1>${bookName}</h1></caption>
<tr align="center">
<td><textarea>
<%
book.display(response, out);
%>
</textarea></td>
</tr>
</table>
</body>
</html>
<%--
String s = (String) request.getSession().getAttribute("bookName");
book.setName(s);
book.display(response, out);
//这里用javaBean代替,jsp里面最好没有java代码
--%>
showUsers.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'showUsers.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<c:forEach var="a" items="${list}">
${a.username}
${a.password}<br/>
</c:forEach>
</body>
</html>
这是首页,那行字是测试代码,忘删了,嘿嘿
登陆
登陆成功
搜索
注册
注册成功
注册成功后登陆
再注册一个
后台显示所有用户和密码
登录失败和注册失败分别显示用户名或密码错误和注册用户已存在,嘿嘿