JSP实训报告

时间:2024.4.14

一、实习内容

1、问题的提出

无论是在商业网站还是在社区中,留言板都是一种重要的功能,通过留言板,用户可以将自己的想法、感受等发表出来以更好地进行交流。留言板的基本功能是让使用者撰写留言或者查看别人的留言。一个功能完善的留言板也有着复杂的功能,这种复杂性主要表现在留言板的管理权限和留言丰富的表现形式两个方面。本次实训项目介绍使用纯文本的留言,并具有添加和删除的权限。

2、问题分析与总体设计

(1)包含模块

①撰写留言模块

功能比较单一,就是给出表单,让撰写者填写留言的标题和内容。一般来说,这个模块要注意的是对留言权限的限制,不同的权限具有不同的功能要求,有的系统允许不登录(匿名)留言,有的系统只有登录过的用户才能留言。本项目允许匿名留言,由JSP、JavaBean、Serlet共同实现,JSP负责显示留言撰写页面,JavaBean完成数据库的连接及添加操作,Serlet负责执行留言记录的添加。

②阅读留言模块

由JSP和JavaBean共同完成,JavaBean完成数据库的连接及查询查询操作,JSP负责显示具体的留言内容,包括留言人、日期、E-mail、留言主题、留言内容、多余留言的分页显示。

③留言管理模块

主要负责留言的删除操作,由JavaBean和Serlet共同实现,JavaBean负责数据库的连接及删除操作,Serlet执行留言记录的删除。

(2)MVC模式

MVC(model-view-controller,模型-视图-控制器)模式的核心思想是将整个程序代码分成既相对独立又能协同工作的3个组成部分。

①模型:业务逻辑层。实现具体的业务逻辑、状态管理的功能。

②视图:表示层。即与用户实现交互的界面,通常实现数据的输入和输出功能。

③控制器:控制层。起到控制整个业务流程的作用,实现视图和模型部分的协同工作。

(3)数据库设计

在SQL Server 中新建数据库message,新建数据表mas,其中“留言id”字段数值为自动编码,表的结构如图所示:

3、项目实现(依据MVC模式)

(1)模型(DB.com)

     DB.conn代码:

package app63;

 import java.sql.*;

 public class DBconn {

 String DBDriver="sun.jdbc.odbc.Jdbc.OdbcDriver";

 String Connstr="jdbc:odbc:message";

 Connection con=null;

 ResultSet rs=null;

  public DBconn(){

     try{

   Class.forName (DBDriver);

       }

   catch(ClassNotFoundException e){

   System.err.println("DBconn:classnotfoundexception");

      }

    }

   public void executeInsert(String s){

         int i=0;

    Statement sql;

       try{

    //con=DriverMananger.get.Connection(Connstr,username,password);

     con=DriverManager.getConnection(Connstr);

     sql=con.createStatement();

      i=sql.executeUpdate(s);

     }

     catch(SQLException sqlexception){

     System.err.println("executeInsert:"+sqlexception.getMessage());

       }

     }

     public ResultSet Querysimple(String s){

     rs=null;

     Statement sql;

     try{

     con=DriverManager.getConnection(Connstr);

 

     sql=con.createStatement();

     rs=sql.executeQuery(s);

     }

  

     catch(SQLException sqlexception){

     System.err.println("executeQuery:"+sqlexception.getMessage());

      }

     return rs;

     }

     public void executeDelete(String s){

     Statement sql;

      try {

     //con=DriverManager.getConnection(Connstr);

     sql=con.createStatement();

     sql.executeUpdate(s);

    }

     catch(SQLException sqlexception){

     System.err.println("executeDelete:"+sqlexception.getMessage());

    }

   }

     public int executeUpdate (String s){

     int i=0;

     Statement sql;

     try{

         con=DriverManager.getConnection(Connstr);

         sql=con.createStatement();

         i=sql.executeUpdate(s);

      }

     catch(SQLException sqlexception){

     System.err.println("executeUpdate:"+sqlexception.getMessage());

     }

      return i;

      }

     public void close(){

     try{

     if(rs!=null)

     rs.close();

     if(con!=null)

         con.close();

       }

      catch(SQLException sqlexception){

      System.err.println("close:"+sqlexception.getMessage());

       }

      }

    }

strConvert代码:

  package app63;

   public class StrConvert{

     public StrConvert(){

      }

  public String chStr(String str){

     if(str==null){

     str="";

     }

        else{

            try {

          str=(new String (str.getBytes("ISO-8859-1"),"GB2312")).trim();

      }

         catch (Exception e){

         System .out.println("chStr");

          System .out.println(e.getMessage());

       }

     }

     return str;

    }

   }

(2)视图(message.jsp)截图

单击“增加留言”连接即可进入添加留言页面,如图所示:

Message.jsp 的视图代码:

<%@ page contentType="text/html; charset=gb2312" %>

<%@ page import="java.sql.*"%>

<html>

<head>

<title>察看留言</title>

<jsp:useBean id="con" class="app63.DBconn" scope="request" />

<body>

<table width="732" height="*" border="1" align="center" cellpadding="1" cellspacing="0" bordercolordark="#ffffff"  bordercolor="#ffffff" bordercolorlight="#0066ff">

  <tr bgcolor="#CCCCFF">

    <td height="22" colspan="5" align="center"><a href="addMessage.jsp">增加留言</a></td>

  </tr>

  <%

       String sqli=" SELECT * FROM mas ORDER BY 留言id DESC";

       ResultSet rs=con.executeQuery(sqli);

       String color="";

       String strpages=(String)request.getParameter("pages");

       int pages=0;

       if(strpages==null){

             pages=0;

       }else{

              pages=Integer.parseInt(strpages);

       }

       rs.last();

       int sqan=4,i=0,fcount=0;

       int count=rs.getRow();

       int countpage=count/sqan;

       if(count%sqan>0) countpage=countpage+1;

       if(pages<0) pages=0;

       if(pages>countpage-1) pages=countpage-1;

       fcount=pages*sqan+1;

       int fpage=(count-fcount)/sqan+1;

       rs.absolute(fcount);

       rs.previous();

       while(rs.next()){

          int id=rs.getInt("留言id");

          String username=rs.getString("留言人");

          String time=rs.getString("留言时间");

 if(masinfo==null) masinfo="";

          if(color==""){

                        color="#ffffff";

                     }else{

                              color="";

                     }

%>

<%=username%>

<%=time%>

<%=topic%>

  <tr bgcolor="<%=color%>">

    <td align="center" width="86" height="22"><div align="left">留言人:</div></td>

    <td align="center" width="158"><%=username%>&nbsp;</td>

    <td height="22"  colspan="2" align="left">留言主题:</td>

    <td width="298" height="22" align="center"><%=topic%>&nbsp;</td>

  </tr>

  <tr bgcolor="<%=color%>">

    <td width="86" height="22" align="center"><div align="left">日期:</div></td>

    <td width="158" height="22" align="center"><%=time%></td>

    <td height="22" colspan="3" rowspan="3" align="left" valign="top"><%=masinfo%>&nbsp;</td>

  </tr>

  <tr bgcolor="<%=color%>">

    <td height="22" align="center"><div align="left">Email:</div></td>

    <td height="22" align="center"><%=email%>&nbsp;</td>

  </tr>

  <tr bgcolor="<%=color%>">

    <td height="22" align="center"><div align="left">处理:</div></td>

    <td height="22" align="center"><a href="delmessage?id=<%=id%>" >删除留言</a></td>

    <%

          i++;if(i==sqan) break;

        }

       try{

              con.close();

       }catch(Exception e){

       }

%>

  </tr>

Addmessage.jsp代码:

<%@ page contentType="text/html; charset=gb2312" %>

<%@ page import="java.sql.*"%>

<html>

<head>

<title>留言</title>

<jsp:useBean id="add" class="app63.DBconn" scope="page" />

</head>

<body>

<form action="addmessage" method="get" name="form1">

  <table width="365" height="276" border="0" align="center" cellspacing="0">

  <tr bgcolor="#AEB6DD">

    <td width="93" height="27" align="left"><span class="style2">留&nbsp;言&nbsp;人:</span></td>

 <td width="324" height="27" style="font-size:12px "><input name="name" type="text" id="name" size="20" maxlength="40" />

      </td>

  </tr>

  <tr bgcolor="#AEB6DD">

    <td width="93" height="27" align="left"><span class="style2">E-mail:</span></td>

    <td width="324" height="27"> <input name="email" type="text" size="20" maxlength="40"> </td>

  </tr>

  <tr bgcolor="#AEB6DD">

    <td width="93" height="27" align="left"><span class="style2">留言主题:</span></td>

    <td width="324" height="27"> <input name="topic" type="text" size="30" maxlength="50"> </td>

  </tr>

    <tr align="left" bgcolor="#AEB6DD">

    <td height="27" colspan="2"><span class="style2">留言信息:</span></td>

    </tr>

  <tr align="left" bgcolor="#AEB6DD">

    <td height="106" colspan="2" valign="top"><span class="style2">

      <textarea name="masinfo" cols="50" rows="6" wrap="PHYSICAL"></textarea>

    </span> </td>

   </tr>

      <tr align="center" bgcolor="#AEB6DD">

        <td height="34" colspan="2">

          <span class="style2">

          <input name="Submit" type="submit" class="code" value="留言" >

          &nbsp;

          <input name="Submit2" type="reset" class="code" value="重置">

        </span></td>

    </tr>

</table>

</form>

</body>

</html>

(3)控制器(addMessage.java   delMessage.java)

 addMessage.java代码:

     package app63;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

public class addMessage extends HttpServlet

{

    private static final String CONTENT_TYPE="text/html;charset=GBK";

    //Initialize global variables

    public void init() throws ServletException{

  }

  //Process the HTTP Get request

    public void doGet(HttpServletRequest requst,HttpServletResponse response)throws

ServletException,IOException

  {

    response.setContentType(CONTENT_TYPE);

    PrintWriter out=response.getWriter();

    out.println("<html>");

    out.println("<head><title>addMessage</title></head>");

    out.println("<body bgcolor=\"#ffffff\">");

    DBcoon con=new DBconn();

    StrConvert chstr=new StrConvert();

    String username=(String)request.getParameter("name");

    String email=(String)request.getParameter("email");

    String topic=(String)request.getParameter("topic");

    String masinfo=(String)request.getParameter("masinfo");

   String nowtime=String.valueOf(new Date().toLocaleString());

    if(username!=null||email!=null||topic!=null||)

     {

         username=chstr.chStr(username);

         email=chstr.chStr(email);

         topic=chstr.chStr(topic);

         masinfo=chstr.chStr(masinfo);

      }

    String sqli="INSERT INFO mas(留言人,留言主题,留言时间,留言人Email,留言内容)

             VALUES("'+username+'","'+topic+'","'+nowtime+'","'+email+'","'+masinfo+'")";

     int temp=-10;

     con.executeInsert(Sqli);

     response.sendRedirect("message.jsp");

    out.println("</body></html>");

   }

    public void destroy(){

    }

}

delMessage.java代码:

  package app63;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

public class addMessage extends HttpServlet

{

  private static final String CONTENT_TYPE="text/html;charset=GBK";

  //Initialize global variables

  public void init() throws ServletException{

  }

  //Process the HTTP Get request

  public void doGet(HttpServletRequest requst,HttpServletResponse response)throws

  ServletException,IOException

  {

   response.setContentType(CONTENT_TYPE);

   PrintWriter out=response.getWriter();

   out.println("<html>");

   out.println("<head><title>delMessage</title></head>");

   out.println("<body bgcolor=\"#ffffff\">");

   DBcoon con=new DBconn();

   int id=integer.parseInt((String)request.getParameter("id"));

   String sqld="DELETE FROM mas WHERE 留言 id="+id;

    con.executeInsert(Sqld);

    response.sendRedirect("message.jsp");

     out.println("</body></html>");

   }

   //Clean up resources

    public void destroy(){

    }

}

二、实习体会

    为期一周的JSP培训已经结束,经过一学期的学习,对于JSP有个初步的了解,这学期我们仅仅学习了一个基础和大概,这次实训,确实让自己受益匪浅,在实训期间,我学到了很多知识,遇到一些困难,也看到了自己的理解存在着许多问题,测试的时候,还总会遇到各种各样的问题,从而导致软件不能执行,所以我们在做程序时一定要细心。经过这次的实训,我真真确确的感受到了JSP在我们生活中工作中的运用,这些软件、程序能让我们提高工作的效率,更直观更便捷的切入主题。这次我们学习的是数据路的原理及应用的各方面知识,由老师带着我们不断操作。

    通过这次实训,我们也感受到了网络的强大,遇到不懂的问题只要上网查下酒知道怎么做了,通过不断的学习,我了解的知识比以前更多了,这是一次很好的时间机会,是对我培养独立思考问题和自学能力的锻炼,让我意识到自己懂得实在太少了,在今后的学习中,要更加勤奋、刻苦,学习更多的知识,更好适应工作的需要。

更多相关推荐:
ps实习报告

四川航天职业技术学院学生实习实训报告书管理工程系实习实训课题Photoshop实用教程实习专业市场开发与营销班级G12市场开发与营销姓名上官柔雪指导老师雨实习实训时间20xx年05月27日至20xx年05月31...

photoshop实训报告

《网页制作与美工》实训报告课程名称:网页制作与美工实训班级:营销s10-4指导老师:涂岭湖南工业职业技术学院20xx年x月photoshop实训报告一、实训目的通过实训,使我们进一步掌握图形图像处理的基本方法…

PS实训报告-学生模板

合肥经济技术职业学院PHOTOSHOP实训报告20xx20xx学年第一学期专业广告设计与制作班级10广告一班学号学生姓名指导教师张明艳1书一实训题目图层运用二实训目的1掌握图层的概念2掌握图层的基本操作3掌握图...

ps实训总结

前言在这个学期的九月六号到十月十五号,六周的时间里,我们网页编辑方向的计算机专业毕业生进行了photoshopcs4的实战练习。运用ps工具对图形进行精确选取,设计简单的图形,处理问题照片,制作各种字样(如冰雪…

Photoshop实训报告

20XX-20XX学年第一学期课程名称:Photoshop基础班级:姓名:学号:专业:指导教师:日期:目录1、课程实习名称01页2、课程实习地点01页3、主要设备01页4、课程实习目的01页5、主要实习内容01…

PS实训报告书3

实训报告书1说明1本报告与学生实际实训项目相关联2综合评语评分总分为该实训项目最终评判分值要求根据学生完成实训实际情况以及实训表现可以在各项分值合成基础之上在55的范围浮动2

ps实训报告

保定职业技术学院课程设计报告20xx年12月20日1内容摘要图形图像处理有两种一种偏向计算机理论是研究相关的算法的另一种偏向艺术不过前者比较常见一些艺术课程为了听起来比较酷有时也起这个名字但是大多数时间它指的是...

ps实训报告

安徽国防科技职业学院图形图像制作PS设计报告班级图像111学号3211171044姓名胥旋旋指导老师李中永一前言我是安徽国防科技职业学院图形图像制作专业的学生我学习photoshop软件一年了一年中我受益匪浅学...

PS实训报告书5

实训报告书1说明1本报告与学生实际实训项目相关联2综合评语评分总分为该实训项目最终评判分值要求根据学生完成实训实际情况以及实训表现可以在各项分值合成基础之上在55的范围浮动2

PS实训报告

综合实训报告模板目录一引言1该产品设计可行性分析该产品是一种的专业4合一多效的洁面乳有卸妆清除防晒霜修护角质洁面效果并且男女皆宜这种多功能产品能满足更多的消费者它的多功能大大提高了它市场需求而且价位中等是一种可...

ps实训报告

实训报告专业笑嘻嘻笑嘻嘻班级休息休息姓名嘻嘻嘻摘要插画上色的步骤和注意要点插画上色中不可避免的要选择混色和立体感的体现所以要注意选择色彩进行混合还有笔和色彩的运用在实训过程中我掌握了汉王手绘板和绘图软件Easy...

photoshop实训报告

Photoshop实训教学总结PS是一款很实用的处理图形图像的软件它和其它计算机图形图像处理程序一样通过操作工具在菜单调板和对话框中做出各种选择来使用通过平面图片的处理及运用ps工具对图形进行精确选取设计简单的...

ps实训报告(35篇)