Java Web学习交流网的设计(模仿百度贴吧)


Java Web学习交流网(模仿百度贴吧)

一、实验目的

1、连接MySQL数据库

2、读取数据库到web页面

 

二、实验要求

1、设计一个贴吧使用户可以注册、提问、回答


三、实验步骤

1、实验准备

安装mysql

安装navicat

MySQLjar包引入MyEclipse

2、功能结构图


3、设计数据库

a  定义三个表

useruidname

questionqiduidtitlecontenttime

answeraidqiduidcontenttime

b  通过e-r图分析三者之间的关系



c 数据库代码

CREATE DATABASE TB;  
  
USE TB;  
  
//创建表格  
CREATE TABLE USER  
(  
        UID INT(10) NOT NULL AUTO_INCREMENT,  
        NAME VARCHAR(20) NOT NULL, 
	PASSWORD VARCHAR(10) NOT NULL,
        PRIMARY KEY(UID)  
)ENGINE=INNODB DEFAULT CHARSET=gb2312;  
  
CREATE TABLE QUESTION  
(  
        QID INT(10) NOT NULL AUTO_INCREMENT,  
        UID INT(10),  
        TITLE VARCHAR(20),  
        CONTENT VARCHAR(100) NOT NULL,  
        TIME VARCHAR(15) NOT NULL,  
        FOREIGN KEY(UID) REFERENCES USER(UID),  
        PRIMARY KEY(QID)  
)ENGINE=INNODB DEFAULT CHARSET=gb2312;  
  
CREATE TABLE ANSWER  
(  
        AID INT(10) NOT NULL AUTO_INCREMENT,  
        QID INT(10),  
        UID INT(10),  
        CONTENT VARCHAR(200) NOT NULL,  
        TIME VARCHAR(15) NOT NULL,  
        FOREIGN KEY(QID) REFERENCES QUESTION(QID),  
        FOREIGN KEY(UID) REFERENCES USER(UID),  
        PRIMARY KEY(AID,QID)  
)ENGINE=INNODB DEFAULT CHARSET=gb2312;  
  
//插入数据  
INSERT INTO USER(UID,NAME,PASSWORD) VALUES  
(1,'张三','111'),  
(2,'李四','222'),  
(3,'王五','333');  
  
INSERT INTO QUESTION(QID,UID,TITLE,CONTENT,TIME) VALUES  
(1,1,'计算','1+1=?','2014-3-2'),  
(2,1,'天气','今天晴天吗?','2014-3-7'),  
(3,2,'日期','明天星期几?','2014-3-9'),  
(4,3,'温度','后天多少度?','2014-4-5');  
  
INSERT INTO ANSWER(AID,QID,UID,CONTENT,TIME) VALUES  
(1,2,2,'今天晴天','2014-3-7'),  
(2,2,3,'今天晴天','2014-3-7'),  
(3,1,2,'1+1=2','2014-3-10'),  
(4,1,3,'1+1=2','2014-3-17'),  
(5,3,2,'今天星期二','2014-3-11'),  
(6,4,1,'后天20度','2014-4-5');  
  
SELECT * FROM USER  
  
SELECT * FROM QUESTION  
  
SELECT * FROM ANSWER  


4、设计java web页面

a 建立三个jsp页面(register.jsp  login.jsp  show.jsp  question.jsp  answer.jsp)

b 具体实现思路:

           1)首先设计register.jsp注册页面,

           2)当用户注册成功后直接进入login.jsp

           3)成功登录的进入index.jsp页面。index.jsp其主要功能是显示数据库中保存的问题,在“管理”一栏中有“查看”或者“浏览(超链接)。

           4)当点击"查看"时页面跳转到question. jsp页面(跳转页面时带有question的id参数),此页面中显示问题的标题发布时间具体内容提问者用户信息,问题下面有一个查看回答的连接

          5)当点击回答按钮时页面跳转到answer.jsp(带着Question的id),answer.jsp页面中第一个任务是:显示指定的这个问题的回答次数,第二个任务是罗列回答的内容、回答者信息、回答时间;第三个任务是,在最下方设计添加一个回答的表单,其action=“addAnswer.jsp”。

          6)addAnswer.jsp处理answer.jsp表单提交的回答数据,处理后正确的5秒内返回第5步(上一步)显示回答页的最新数据(能够看到多了一个回答)。错误的返回上一页面(可以尝试记着上次的输入数据)。


注意:同时每个页面都可以返回到主页

        (可参考课本项目6.3---图书管理系统

c 实验结果:

  1)输入用户名和密码(张三:111   李四:222  王五:333),如果输入正确会提示“登陆成功”,否则提示“注册用户”。(可参考index.jsp


  2)输入正确后跳转到show.jsp。点击“提出问题”时,用户可以添加自己的问题;点击“查看”时,用户可以查看当前问题

  3)当点击“查看”时,可以查看问题的标题、时间、内容和提问者的信息。点击返回时可以返回到show.jsp界面,同时也可以点击查看回答信息


  4)当点击查看回答信息时,可以查看回答的时间、内容、回答者。点击返回时可以返回到show.jsp界面,同时可点击回答


  5)当点击回答时可以添加自己的回答信息。点击添加跳转到查看回答信息界面


  6)当在show.jsp中点击提问问题时


d 主要代码:

index.jsp

<%@ page language="java" import="java.sql.*" 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>
    
    <title>登录</title>
	
  </head>
  
  <body>
    <center>
    <h1>登录界面</h1>
    <form action="" method="post">
    用户名:<input type="text" name="name"><br>
    密码:<input type="password" name="pwd"><br>
    <input type="submit" name="submit" value="登录">
    <input type="submit" name="register" value="注册">
    </form>
    <%
    request.setCharacterEncoding("utf-8");
    String name=request.getParameter("name");
    String pwd=request.getParameter("pwd");
    String submit=request.getParameter("submit");
    String register=request.getParameter("register");
    int biaoji=0;
    
    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/TB","root","123");
    Statement stmt=con.createStatement();
   	String s="select * from user";
   	ResultSet rs=stmt.executeQuery(s);
   	if(submit!=null&&register==null)
   	{
	    while(rs.next())
	    {
	        int uid=rs.getInt(1);
	         if(rs.getString(2).equals(name)&&rs.getString(3).equals(pwd))
	        {
		         session.setAttribute("sessionname",uid);
		         out.println("<script language='javaScript'>alert('登陆成功,单击确定跳到主页!')</script>");
		         response.setHeader("refresh", "1;url=show.jsp");
		         biaoji=1;
		         break;
	        }
	    }
	    if(biaoji==0)
	    {
	    	   out.println("<script language='javaScript'>alert('没有此用户,单击确定注册新用户!')</script>");
	    }
	 }
	  if(register!=null&&submit==null)
	{
	   session.setAttribute("sessionname", name);
	   session.setAttribute("sessionpwd", pwd);
	   String sql="insert into user(name) values('"+name+"')";
	   int i=stmt.executeUpdate(sql);
	   
	   if(i==1)
	   {
		   out.println("<script language='javaScript'>alert('注册成功,单击确定跳到主页!')</script>");
		   response.setHeader("refresh", "1;url=index.jsp");
	   }
    }
  
	
   %>
    </center>
  </body>
</html>
show.jsp

<%@ page language="java" import="java.sql.*" 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>
    <title>My JSP 'show.jsp' starting page</title>
  </head>
  
  <body>
    <center>
    <caption><a href='addquestion.jsp'>提出问题</a></caption>
    <table align="center" width="30%" border=1>
    	<tr><th>标题</th><th>管理</th></tr>
    	<%
    	Class.forName("com.mysql.jdbc.Driver");
    	Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/TB","root","123");
    	Statement stmt=con.createStatement();
   		String s="select * from question";
   		ResultSet rs=stmt.executeQuery(s);
    	while(rs.next())
    	{
    		int qid=rs.getInt(1);
    		out.println("<tr><td>"+rs.getString(3)+"</td><td><a href='question.jsp?qid="+rs.getString(1)+"'>查看</a></td></tr>");
    	}
    	rs.close();
    	stmt.close();
    	con.close();
    	 %>
    </table>
    </center>
  </body>
</html>

question.jsp

<%@ page language="java" import="java.sql.*" 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>
    <base href="<%=basePath%>">
    
    <title>问题信息</title>

  </head>
   
  <body>
  <center>
    	<%
    	
    	Class.forName("com.mysql.jdbc.Driver");
    	Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/TB","root","123");
    	Statement stmt=con.createStatement();
    	String qid=request.getParameter("qid");
   		String s="SELECT QID,NAME,TITLE,CONTENT,TIME FROM QUESTION,USER WHERE USER.UID=QUESTION.UID and qid="+qid;
   		ResultSet rs=stmt.executeQuery(s);
   		rs.next();
   		%>
   		<form action=question.jsp method="post">
   		<table align="center" width="20%" border=1>
   		<caption>查看问题信息</caption>
   		<tr><td>标题:<%=rs.getString(3)%>                 时间:<%=rs.getString(5)%></td></tr>
   		<tr><td>内容:<input name="qcontent" type="text" value="<%=rs.getString(4)%>"></td></tr>
   		<tr><td>提问者:<input name="quser" type="text" value="<%=rs.getString(2)%>"></td></tr>
   		<tr><td><a href='show.jsp'>返回</a> <a href='answer.jsp?qid=<%=rs.getString(1) %>'> 查看回答内容 </a></td></tr>
   		</table>
   		</form>
    	<% 
    	rs.close();
    	stmt.close();
    	con.close();
    	 %>
    	 </center>
  </body>
</html>

answer.jsp

<%@ page language="java" import="java.sql.*" 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>
    <base href="<%=basePath%>">
    
    <title>查看回答信息</title>
    

  </head>
  
  <body>
    <center>
    <table align="center" width="50%" border=1>
    	<%
    	Class.forName("com.mysql.jdbc.Driver");
    	Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/TB","root","123");
    	Statement stmt=con.createStatement();
   		String s="select name,qid,answer.content,answer.time from USER,answer where user.uid=answer.uid and qid="+request.getParameter("qid");
   		ResultSet rs=stmt.executeQuery(s);
   		
   		
   		%>
   		<form action=answer.jsp method="post">
   		<table align="center" width="20%" border=1>
   		
   		<caption>查看回答内容</caption>
   		<%while(rs.next()) {%>
   		<tr><td>                时间:<%=rs.getString(4)%></td></tr>
   		<tr><td>内容:<input name="acontent" type="text" value="<%=rs.getString(3)%>"></td></tr>
   		<tr><td>回答者:<input name="auser" type="text" value="<%=rs.getString(1)%>"></td></tr>
   		<tr><td><a href='show.jsp'>返回</a> <a href='addanswer.jsp?qid=<%=rs.getString(2)%>'> 回答 </a></td></tr>
   		<%} %>
   		</table>
   		</form>
    	<%
    	rs.close();
    	stmt.close();
    	con.close();
    	 %>
    </table>
    </center>
  </body>
</html>

addanswer.jsp

<%@ page language="java" import="java.sql.*" pageEncoding="UTF-8"%>
<html>
  <head>
    
    <title>添加回答</title>
  </head>
  
  <body>
 	<% 
 	 request.setCharacterEncoding("UTF-8");
 	String qid=request.getParameter("qid"); %>
    <form action="addanswer.jsp" method="post">
    <table align="center" width="40%" border=1>
    <caption>添加回答内容</caption>
    	<tr>
    		<th>回答内容</th>
    		<td>
    			<textarea name="myanswer" row="5" cols="60"> </textarea>
    			<input type="hidden" name="qid" value="<%=qid%>">
    		</td>
    		
    		
    	</tr>
    	<tr>
    		<th colspan="2">
    		<input type="submit" name="submit" value="添加">
    		<input type="reset" value="重置">
    	</tr>
    </table>
    </form>
    <%
   
   
    String content=request.getParameter("myanswer");
    //String time=request.getParameter("time");
    String submit=request.getParameter("submit");
    
    
    
    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/TB","root","123");
    Statement stmt=con.createStatement();
    	
    if(submit!=null&&!submit.equals(""))
    {
    		
    	String s="insert into answer(qid,uid,content,TIME) values("+qid+","+session.getAttribute("sessionname")+",'"+content+"','2014')";
    	  int i=stmt.executeUpdate(s);
    	if(i==1)
    	{
    		out.println("<script language='javascript'>alter('添加成功,单击确定跳转到回答页面');</script>");
    		response.setHeader("refresh", "1;url=answer.jsp?qid="+qid);
    	}
    	else{
    		out.println("<script language='javascript'>alter('添加失败,单击确定跳转到添加页面');</script>");
    		response.setHeader("refresh", "1;url=addanswer.jsp");
    	}  
    	
    	
    }
     stmt.close();
    con.close(); 
     %>
  </body>
</html>

addquestion.jsp

<%@ page language="java" import="java.sql.*" pageEncoding="UTF-8"%>
<html>
  <head>
    
    <title>添加回答</title>
  </head>
  
  <body>
 	<% 
 	 request.setCharacterEncoding("UTF-8");
 	String qid=request.getParameter("qid"); %>
    <form action="addanswer.jsp" method="post">
    <table align="center" width="40%" border=1>
    <caption>添加回答内容</caption>
    	<tr>
    		<th>回答内容</th>
    		<td>
    			<textarea name="myanswer" row="5" cols="60"> </textarea>
    			<input type="hidden" name="qid" value="<%=qid%>">
    		</td>
    		
    		
    	</tr>
    	<tr>
    		<th colspan="2">
    		<input type="submit" name="submit" value="添加">
    		<input type="reset" value="重置">
    	</tr>
    </table>
    </form>
    <%
   
   
    String content=request.getParameter("myanswer");
    //String time=request.getParameter("time");
    String submit=request.getParameter("submit");
    
    
    
    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/TB","root","123");
    Statement stmt=con.createStatement();
    	
    if(submit!=null&&!submit.equals(""))
    {
    		
    	String s="insert into answer(qid,uid,content,TIME) values("+qid+","+session.getAttribute("sessionname")+",'"+content+"','2014')";
    	  int i=stmt.executeUpdate(s);
    	if(i==1)
    	{
    		out.println("<script language='javascript'>alter('添加成功,单击确定跳转到回答页面');</script>");
    		response.setHeader("refresh", "1;url=answer.jsp?qid="+qid);
    	}
    	else{
    		out.println("<script language='javascript'>alter('添加失败,单击确定跳转到添加页面');</script>");
    		response.setHeader("refresh", "1;url=addanswer.jsp");
    	}  
    	
    	
    }
     stmt.close();
    con.close(); 
     %>
  </body>
</html>








posted @ 2014-04-13 17:06  涛涌四海  阅读(206)  评论(0编辑  收藏  举报