Java Web 生产实习报告

生产实习报告


一、实习目的与任务

为了锻炼我们的实践动手能力,提高我们分析问题、解决问题的能力,培养我们的工作意识和团队合作的意识,了解软件开发的过程和基本流程 ,以便于帮助我们能够在大四毕业时可找到一份客观的工作,我们在大四刚开学就开始了生产实习。

这次实习的主要任务是Java Web软件开发,学习Java开发中比较典型且经常用到的几个知识,其中包括Jsp、Servlet、Html、JDBC等等,另外,Java开发中也必须要用到数据库,因此实习中还加入了Mysql数据库的学习。掌握了这些基本知识之后,就开始真正的项目开发,而且此次我们所要开发的项目是有关博客页面的项目,并完成老师指定的功能。

二、实习地点

     武汉市软帝信息科技有限公司

三、实习内容和要求

我们这次实习,在校外也就是软帝公司总共是十天,开始几天基本上是每天学习一个方面的内容,大概学习了六天其中包括Jsp、Servlet、Html、JDBC、Mysql等等,剩下几天就是项目时间,做出一个博客开发的项目。大致内容如下:

一、Java语言简介

Java语言Java是由Sun微系统公司所发展出来的程序语言,它是一种面向地向的语言,Java也号称是能跨平台使用的语言,这主要是因为Java本身被编译之后,并不是直接产生可执行的代码,而是产生一种中间码叫作 ByteCode,这种代码必需在透过 Java 的直译器来解读它,才能够真正的被执行,所以只要平台上装有这种Java的直译器,就能解读ByteCode也就能执行Java编译过的程序,故与Java程序是在那种平台上被编译的,就完全没有干系了。

Java写出来的程序可分为两类,分别是Java Applet与一般的Application,而Application这一类就与一般的程序如C++的作用是比较类似的,是一个独立可执行的应用程序,像HotJava是一个浏览器,且就是使用Java程序所发展出来的。最常见的Java程序包括应用程序和applets。应用程序是单独的程序,诸如HotJava浏览器软件就是用Java语言编写的。

Applets类似于应用程序,但是它们不能单独运行, Applets可以在支持Java的浏览器中运行。Applet主要是内置于HTML网页中,在浏览时发挥作用。

Java的目标是为了满足在一个充满各式各样不同种机器,不同操作系统平台的网络环境中开发软件。利用Java程序语言,可以进行网页开发,其中包括静态语言开发与动态网页开发,可以在网页中加入各式各样的动态效果,可以放上一段动画,加入声音,也可以建立交互式网页等。

二、Html语言

    Html是超文本标记语言,它是一种非严格的标记语言,它是web开发的基础,也是制作网页的基础,纯html的页面是静态的。

 Html它由head和body两部分组成,所写的内容一般都是放在body中,其中可以添加Form表单域,其中属性 Action表示提交的动作,也就是提交到那个页面,可表示为Action=“http://www.baidu.com”;Method属性表示提交的方法,一般为设为post;在Form表单域中添加table表,table中的属性只有很多,常用的有width、height、align、colspan等等,当然,有表就会有行和列,其中行用tr表示,列用td表示,行与列的属性值与table差不多。

在行与列中还可以添加一些按钮,链接等等,添加按钮是用<input>表示,添加链接则用<a href="">来添加,另外,还有一个比较有用的标签<div>,可以画出一个框,里面可以添加所需要的东西。

运用Html我们开发了一个e-mail邮件发送系统,这个界面主要用到了七个htm文件,有主页面 main.html,其中主页面分为上部、左部和右部,分别用top.html、left.html、right.html文件来表示。另外还增加了登录页面(login.html)、注册页面(regist.html)以及书写邮件的页面(write.html),由这些html文件共同实现了e-mail的基本界面。

首先进入login登录界面,输入用户名和密码,而且用户名和密码有一定的限制,输入信息符合要求后方可进入主页面,另外,在登录界面的用户名后还有一个超链接“注册”,点击“注册”就可以进入注册的页面,注册页面上有五行,包括用户名、密码、重复密码以及上传头像,另外还有两个按钮“提交注册”和“重置”,这样即可完成注册。

登陆界面中还用到了JavaScript,用以给出用户名和密码的限制条件,其中有一个function方法,用到的代码如下:

    <script type="text/javascript">

              function checkInfo(){

                     var name=document.getElementById('username').value;

                     var pass=document.getElementById('pass').value;

                     if(name==""){

                            alert("请输入用户名!");

                            return false;

                            }else{

                                   if(pass==""){

                                          alert("请输入密码!");

                                          return false;

                                   }else{

                                          return true;  

              }

                     }

              }    

       </script>

    以后若要用到限制条件,都是运用与此类似的方法,这段代码可以说是一个模板。

进入到主页面后,可以看到三个部分,左边的部分用链接列出几项,包括“写信”、“收信”、“联系人”、“百度”等,右边显示好友上传图片,顶部是背景图片。点击左边的写信,跳转到write页面,可以写邮件。右边的现实的图片可以进行查看,与空间显示的图片差不多,也是可以由小图片转换成大图片。当鼠标点击到小图标X上时,图标就亮了,鼠标拿走,图标就暗了,如图1所示。

图1   E—mail邮箱中查看图片

另外,我们运用Html还设计了一个hao123页面,页面中用到了text文本框、超链接、行列的布置,图片的加载等等,做出来之后,整体感觉与hao123本来的页面基本差不多,只不过,还有些功能没能实现。

三、Mysql数据库

 Mysql是一种小型的数据库,它与Java的联系十分密切,MySQL是一个小型关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了Mysql作为网站数据库,因此,网页编写大多数都是用Mysql。

 Mysql是一个关联数据库,它将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内。这样就增加了速度并提高了灵活性。Mysql的Sql指得是“结构化查询语言”,Sql是用于访问数据库的最常用标准化语言。同时,Mysql软件也是一种“开放源码”的软件,意味着任何人都能使用和改变软件。任何人都能从Internet下载Mysql软件,而无需支付任何费用。如果愿意,你可以研究源码并进行恰当的更改,以满足你自己的需求。Mysql软件采用了GPL(GNU通用公共许可证),定义了在不同情况下可以用软件作的事和不可作的事。数据库服务器具有快速、可靠和易于使用。

Mysql服务器还有一套实用的特性集合,在基准测试主页上,给出了Mysql服务器和其他数据库管理器的比较结果。Mysql支持多种连接,包括TCP/IP、ODBC和JDBC等多种数据库连接途径 ,而我们此次实习用到的是JDBC数据库连接方法,这一点在下面会讲到。

此次实习我们主要学习了如何在Mysql数据库中建立表格,如何执行Sql语句等等。首先,打开Mysql编写框,执行语句show databases,即可查看Mysql中有哪些数据库,运用create+数据库名语句可建立想要的数据库,运用use+数据库名即可进入对应的数据库。

进入数据库之后,就可以执行数据库中的增、删、查、改等Sql语句了,运用create table +表名(表中所需要的元素),这样就可以建立一张表了,运用desc+表名就可以查看表,运用Sql语句“select * from +表名”就可以查看表中的所有数据,运用“insert into ……”语句可以向表中添加数据;运用“update +表 set …… Where……”可以更改表中指定的某项数据;运用“delete +表 where ……”语句可以删除表中的某项数据……

其实这些知识与上学期学过的Sql Server大致一样,只不过运行环境不同,而且Mysql使用的比较多,而且也很简单,运用MySQL Command Line Client进行访问数据可以及执行各种SQL语句。

图2  查看数据库         

                           图3  查询表

  

图4  执行Sql语句

四、JDBC数据库连接

 Java中的JDBC,JDBC是Java Data Base Connectivity的缩写,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

连接数据库的方法有一个模板,代码如下:

public class DBManager {

       private static final String URL="jdbc:mysql://localhost:3306/test";

       private static final String USER="root";

       private static final String PASSWORD="123";

       private static Connection conn=null;

       public static Connection getConn(){

       try {

                  if(conn==null){

                     //注册驱动

                     Class.forName("com.mysql.jdbc.Driver");

                     conn=DriverManager.getConnection(URL,USER,PASSWORD);

              }  } catch (ClassNotFoundException e) {

                     e.printStackTrace();

              } catch (SQLException e) {

                    e.printStackTrace() ;}

              return conn;

}

}

以后运用数据库连接基本上都是用这个模板,方便又有效,而且在其他地方连接数据库时都可以直接对其进行调用。

通过JDBC我们可以连接到所用的数据库mysql,可以从数据库中提取数据,也可以将所写数据存入数据库,用JDBC连接数据库都是一个模式,基本上都是按照一个套路在写,运用JDBC以及MyEclipse工具,我们也做出了一个小型的系统。

系统具有添加、查询、删除、修改、退出系统等功能,添加功能可以控制台中所写的信息添加到数据库中,查询信息则是根据id号从数据库中查询信息并将信息显示出来,增加、删除亦是如此,要做出这些功能首先都必须先连接到数据库,这就要用到JDBC技术,还要用到Connection 方法,首先加载mysql数据库的驱动,然后在创建连接,连接时要提供所用计算机的IP地址和端口号,以及mysql数据库数据库的用户名和密码。

连接好数据库后,再根据所需要的功能编写出对应的方法,不同方法对应不同的sql语句,例如添加信息(add)中用insert语句,删除用delete语句,修改用update语句等等,然后主函数中提供对功能的选择,不同的编号对应不同的功能,并且根据所选的功能调用的方法。   

五、JSP

    JSP是Java Server Pages的缩写,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(JavaScript)和JSP标记(tag),从而形成JSP文件(*.jsp)。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

JSP页面通常被编译成为Java Servlets,这是一个标准的Java扩展。页面开发人员能够访问全部的Java应用环境,以利用Java技术的扩展性和可移植性。当JSP页面第一次被调用时,如果它还不存在,就会被编译成为一个Java  Servlets类,并且存储在服务器的内存中。这就使得在接下来的对该页面的调用中,服务器会有非常快的响应。

我们所做的学生信息管理系统也需要用到Mysql数据库和JDBC技术,所做的系统同样可以添加、修改、查询和删除学生信息,不过这些功能是运用不同的页面显示,点击不同的按钮即可跳转到所需的页面,而后获得想要的信息。每个功能都建立一个JSP页面,其中主页面是Index.jsp,在这个页面中有两个链接,分别转到增加信息和浏览信息页面,浏览信息页面中还包括了对信息的修改和删除。

例如,系统中浏览学生信息的页面的代码如下:

 <body>

       <table align="center">

           <tr bgcolor="pink">

               <td width="100px" align="center">学号</td>

               <td width="100px" align="center">姓名</td>

               <td width="50px" align="center">性别</td>

               <td width="50px" align="center">年龄</td>

               <td width="160px" align="center">专业</td>

               <td width="180px" align="center">操作</td>

           </tr> 

       <c:forEach items="${stus}" var="stu">

         <tr>

               <td>${stu.sno}</td>

               <td>${stu.sname}</td>

               <td>${stu.sex}</td>

               <td>${stu.age}</td>

               <td>${stu.major}</td>

               <td align="center">

               <a href="studentDelete.jsp">删除</a>

               <a href="studentUpdate.jsp">修改</a>

               </td>  </tr>  </c:forEach>

       </table>

   <body>

另外还用到了两个Java类StuDAO和StuDTO,这两个类中用到JDBC技术,它们分别用以从数据库中读取数据和将数据存入到数据库中。这两个类中有很多方法,通过调用这些方法即可实现学生信息管理系统中的增、查、删、改等功能!

六、Servlet

    Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

Servlet生成响应内容并将其传给Server,响应内容动态生成,通常取决于客户端的请求。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法,用的比较普遍的是doPost()方法。举例如下:

public void doPost(HttpServletRequest request, HttpServletResponse  response)

           throws ServletException, IOException {

        //1、获取id

        String sid=request.getParameter("id");

        int id=Integer.parseInt(sid);

        //2、根据id查询到对应的学生信息

        StuDAO sdao=new StuDAO();

        StuDTO stu=sdao.queryStu(id);

        //3、将stu传递到studentModify.jsp页面显示

        request.setAttribute("stu",stu);

request.getRequestDispatcher("studentModify.jsp").forward(request,response);

我们同样是以学习建立学生信息管理系统为例来学习Servlet的,Servlet与JSP差不多,最主要的差别是JSP是实现普通静态HTML和动态HTML混合编码的技术,Servlet则是web页面和服务器之间的连接物,而这基本上没什么区别。

在编写学生信息管理系统的时候,只不过在昨天编写的基础上,将某些JSP文件运用Servlet表示,像那些只做显示用的JSP页面不做变化,而中间有调用StuDAO中的方法的JSP页面,它们不做显示用,而是要与数据库联系起来,像这些JSP页面就可以转换成相应的Servlet,其中的代码与JSP中的几乎一样,这样处理之后,减少了页面,不过功能没有变化,更加方便了!

    七、博客开发

博客开发中用到了前面所学到的所有知识,包括Java语言、HTML、JDBC技术、JSP、SERVLET等,实习指导教师先把博客页面的基本框架发给我们,然后带领我们对这个页面做出相应的补充。

首先,做出登录界面,由登录界面跳转到主界面。登录界面使login.jsp编写基本框架,包括用户名和密码,以及登录和重置按钮,当登录信息填写完成之后提交到LoginServlet,与数据库连接起来,验证输入的信息与数据库中的信息是否一致,一致的话就跳转到博客主页面,否则就会报错。登录页面图5所示:

                       图5   博客登陆界面

其次,做出用户注册页面,这个页面与登录页面基本上差不多,使用register.jsp编写基本框架,其中的内容与login.jsp一样,只不过多了一行“重复密码”以及提交的路径不同 ,注册页面提交到RegisterServlet,即将注册时填写的信息添加到数据库中的userinfo中,添加进去即注册成功,否则注册失败。RegisterServlet的代码如下:

public void doPost(HttpServletRequest request, HttpServletResponse response)

                    throws ServletException, IOException {

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

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

              User user=new User();

              user.setUserName(name);

              user.setPassWord(password);

              boolean flag= UserDAO.checkRegist(user);

              if(flag){

                     request.setAttribute("msg","注册成功!");

              }else{

                     request.setAttribute("msg","注册失败!");

              }

              request.getRequestDispatcher("/admin/login.jsp").forward(request,response);

      }

注册页面如图6所示:

图6   博客注册页面

再次,完成博客后台管理中的一些功能,首先是从文章的类别管理板块着手开始编写的,文章类别管理包括添加类别和浏览/删除/修改类别这些功能,要完成这几点功能就需要在数据库中建立一张tab_Article_type表,表中需要有类别名、类别描述等元素。

然后运用MyEclipse开发工具进行编写,需要建立一个Article_typeDTO,其中自动导入set/get方法。

再建立一个Article_typeDAO,其中写一个addArticalType方法,用于添加文章的类别,并将所写的类别添加到数据库中;queryArticleType方法用于查询数据库中的文章类别,并将类别显示在网页上;removeById方法用于根据id来删除数据库tab_Article_type表中的文章类别项;update方法用于修改数据库tab_Article_type表中的文章类别信息,总之这些方法都是与数据库联系起来的。Article_typeDAO中添加类别的代码如下:

public class Article_typeDAO {

      public static boolean addArticalType(Article_type type){

             boolean flag=false;

             try {

                    Connection conn=DBManager.getConn();

                    String sql="insert into tab_type(type_name,type_des)values(?,?)";

                    PreparedStatement ps=conn.prepareStatement(sql);

                    ps.setString(1, type.getType_name());

                    ps.setString(2,type.getType_des());

                    int i=ps.executeUpdate();

                    if(i==1){

                           flag=true;

                    }

             } catch (SQLException e) {

                    e.printStackTrace();

             }

             return flag;

 }

然后建立一个ArticleTypeServlet,用于将页面与数据库中的表链接起来,实现点击页面上的某一项,就可实现其所表示的功能,主要有文章类别的增加、浏览、删除和修改等功能,这些都可以通过页面跳转显示在不同页面上,同时,所修改的信息也能够保存到数据库中的tab_Article_type表中,这样就实现了文章类别的管理。

    文章管理的做法与文章类别管理的做法大致上相同,这里就不做详细说明,另外还有上传图片的功能,做法也与前面类似博客,博客开发基本上就完成了这些功能。上传图片的页面图7所示。

图7  上传图片页面

四、实习总结及分析

这次实习主要是学习Java Web开发方面的相关知识,主要的有JSP、Servlet、HTML,另外还有JDBC,Mysql数据库等等。

首先是JSP,它是Java Web开发的基础,需要的页面都是用JSP来建立的,它是一种动态的网页技术,其中,可以显示动态画面以及动画效果,在其中也可以编写Java代码,也可以加入html编写语言,通过form表单中的action属性可以实现页面间的跳转,点击不同的按钮,可以跳转到相应的页面,它是Java Web编程中必不可少的部分,Java语言开发的任何项目都要用到它;

其次是Servlet,它也是Java Web开发中必不可少的部分,Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。Servlet生成响应内容并将其传给Server,响应内容动态生成,通常取决于客户端的请求。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法,用的比较普遍的是doPost()方法。

再次,是HTML语言,它也是必不可少的,经常是嵌入在JSP中运用,它是一种静态页面开发技术,其中用的最多的是运用HTML语言建立form表单,其中有行(tr)和列(td),另外它的标签<div>也用的比较多,主要是利用它可以在页面上任意移动,而且它的大小不会改变,还可以隐藏、变透明等等,再有就是其中的JavaScript用的也比较多,主要是写一些function方法,用来限制一些信息;

最后,其他几个方面也非常重要,像JDBC用于应用程序和数据库的连接,没有这个方法就无法和数据库连接起来,所以十分重要;Mysql数据库也是Java项目开发中用到最多的一种数据库,没有数据库就无法实现信息的增、删、查、改,所以这些都是必不可少的。

五、实习体会

实习就这样在不知不觉中就结束了,这次实习我们学到了很多知识,Java中的HTML、JSP、Servlet、JDBC等等,虽然这些知识我并没有学得很精通、深邃,也只是掌握了一点皮毛而已,不过对于JAVA我们还是有了更深刻的了解,知道了Java的博大精深,此外我还学到了另外一种数据库,Mysql数据库,这是一个小型数据库,与以前的SQL Server 有相同也有不同,同时还学会了如何运用MyEclipse开发工具等等。

同时也学到了项目开发的思考角度和基本流程,提高了我们分析和解决问题的能力,锻炼了我们实际动手操作能力,为以后的工作打下了坚实的基础。

实习就快结束了,在此我要特别感谢几位老师,,首先是带领我们实习的刘黎志老师,对我们尽心尽力,经常到实习基地监督指导我们,感谢老师对于我们的关心和照顾;其次,就是要感谢带领我们进行第一阶段学习的软帝指导老师杨涛老师,他细心的教授我们知识,对没听懂的同学一一辅导,在他的讲解下我们学到了很多基础知识;最后要感谢带领我们做项目的马文成老师,他的耐心讲解让我们感受到了做项目的乐趣,哪位同学有错误他就会一一帮助修改,真的非常感谢他们!

相关推荐