Java EE应用开发实验指导书.doc
Java EE应用开发实验指导书目录实验0 JSP开发环境配置与测试5【实验目的】5【实验环境】5【实验指导】51 JSP开发环境配置51、安装JDK52、安装Tomcat53、安装Eclipse64、安装MySQL62 JSP程序开发步骤6实验1 JSP语法和内置对象8【实验目的】8【实验环境】8【实验指导】81 JSP页面结构81.1声明变量与方法81.2 JSP表达式81.3 JSP代码段91.4 JSP注释92 JSP指令102.1 include指令103 JSP动作103.1 include动作103.2 forward动作103.3 useBean动作、setProperty动作和getProperty动作104 application对象11【实验报告】11实验2 JSP文件上传与下载12【实验目的】12【实验环境】12【实验指导】121 文件上传122 文件下载13【实验报告】13实验3 SERVLET应用15【实验目的】15【实验环境】15【实验指导】151 编写一个Servlet152 部署Servlet163 执行Servlet16【实验报告】16实验4 MVC综合案例17【实验目的】17【实验环境】17【实验指导】171 框架设计172 创建数据库173 设计JavaBean,获取数据库连接184登录功能实现194.1编写登录页面194.2编写JavaBean,保存登录信息,和login表中信息对应194.3 编写JavaBean,实现和数据库的数据交互204.4编写登录Servlet234.5 编写成功跳转页面245 权限验证246 添加学生256.1 新建AddStudent.jsp页面256.2 新建Student类256.3 新建业务处理类266.4 新建AddStudentServlet类,实现从jsp获取数据,最终添加到数据库的功能。266.5 显示学生信息267 其他功能实现26【实验报告】26附录 JSPSMARTUPLOAD API说明281 File类281.1 saveAs281.2 isMissing281.3 getFieldName281.4 getFileName281.5 getFilePathName281.6 getFileExt281.7 getSize281.8 getBinaryData292 Files类292.1 getCount292.2 getFile292.3 getSize292.4 getCollection292.5 getEnumeration293 Request类293.1 getParameter293.2 getParameterValues293.3 getParameterNames294 SmartUpload类294.1 上传与下载共用的方法304.2上传文件使用的方法304.3下载文件常用的方法31实验0 JSP开发环境配置与测试【实验目的】1、了解JSP开发环境安装与配置;2、了解JSP开发的一般步骤。【实验环境】计算机,操作系统Windows XP或更高版本。【实验指导】1 JSP开发环境配置JSP编程使用的Java语言,所以运行JSP程序必须要有JVM的支持,还必须要有Java程序开发包(JDK)的支持。现在企业流行的集成开发环境是Eclipse或MyEclipse。大多数应用程序都需要连接数据库,所以需要DBMS的支持。JSP应用程序是运行在服务器上的,所以需要Web服务器的支持,在此以Java 1.6 Update21、Tomcat、MySQL、Eclipse6.5为例,安装配置JSP开发环境。1、安装JDK从Java公司官方网站(1)我的电脑->属性->高级选项卡->环境变量,打开“环境变量”对话框,在系统变量中新建以下环境变量:JAVA_HOME:表示Java SDK的安装目录,其值为: D:Program FilesJavajdk1.6.0_21(根据自己的实际安装位置进行调整)。CLASSPATH:表示Java要访问的jar文件所在的目录,其值为:%JAVA_HOME%lib;%JAVA_HOME%jrelib。并修改Path环境变量,在其中增加%JAVA_HOME%bin;%JAVA_HOME%jrebin;注意:² 对于Path环境变量是添加,否则很多Windows功能不能使用;若有其他程序要用到自己的Java环境变量,请将第步的内容添加到Path环境变量的最后,以免影响其他程序的运行。² 字母不区分大小写,大写字母是遵照Java环境变量配置习惯。(2)测试打开Windows的命令行窗口(开始->运行,在弹出的窗口中输入cmd回车),输入javac然后回车,若能显示javac的帮助信息,说明JDK安装成功,如下图所示。2、安装Tomcat在Tomcat官方网站(http:/tomcat.apache.org/)上下载Tomcat,解压到相应目录。设置环境变量CATALINA_HOME=C:apache-tomcat-7.0.42,PATH=%CATALINA_HOME%bin。在IE浏览器地址栏中输入:http:/localhost:8080回车,若能出现Tomcat界面说明安装成功。3、安装Eclipse将Eclipse加压到相应目录。运行eclipse.exe。4、安装MySQL下载MySQL的安装文件安装。2 JSP程序开发步骤打开Eclipse开发环境,选择File->New->Dynamic Web Project,选择Target runtime为Tomcat。在Project Explore内,选择项目,Project->Properties->Java Build Path标签,在右边的Source folders on build path内,移除所有的源文件路径,在Default output folder窗口,修改为项目名/WebContent/WEB-INF/classes。(1) 第一个JSP页面在项目/WebContent中,创建src文件夹,用于保存JSP文件。右单击src目录,New->JSP新建JSP页面。输入文件名HelloWorld.jsp,点击确定。在页面的<body>标签中,输入以下代码:<% out.println("<h1>Hello World!</h1>"); %>并保存。(2) 调试及运行Demo项目按调试或运行按钮启动程序。实验1 JSP语法和内置对象【实验目的】1、掌握JSP变量/方法,表达式,代码段和注释的使用方法;2、掌握JSP指令的语法格式及用法;3、掌握JSP常用动作的语法格式及用法;4、掌握常用的JSP内置对象。【实验环境】计算机,操作系统Windows XP或更高版本配有JSP开发环境。【实验指导】1 JSP页面结构说明:代码如无特殊说明均写在<body>标签中(JSP代码可以写在网页的任何位置)。1.1声明变量与方法新建JSP页面,输入以下代码。(1) 声明变量<%! int i=0; %> <% out.println("i="+i+);%>刷新页面几次,观察到什么结果,为什么?(2) 输入以下代码<%! public int max(int a, int b) if (a>b) return a; return b; %> <% out.println("<h1>3和5中较大的是"+max(3,5)+"</h1>"); %>将上面变量和方法的声明,写在out.println();代码段之后,再访问JSP页面,观察结果,为什么?1.2 JSP表达式在JSP页面中输入以下代码。<h1><%=max(3,5) %></h1><h1><%=(i+a+c)/3 %></h1><h1><%=date.toString() %></h1><%! public int max(int a, int b) if (a>b) return a; return b; int i = 3, a = 5, c=4;Date date = new Date();%>通过上面的代码,你认为JSP表达式可以出现什么Java元素?1.3 JSP代码段在JSP页面中输入以下代码。(<% %>中的代码段,无论写在多少个分离的<% %>标签中,都必须完整,即符合Java语法,比如大括号必须匹配等)<% int grade = 80; switch(grade/10) case 10:; case 9: %> <h1>你的成绩为优秀!</h1> <% break; case 8:; case 7: %> <h1>你的成绩为良好!</h1> <% break; case 6: %> <h1>你的成绩为及格!</h1> <% break; default: %> <h1>你的成绩为不及格!</h1> <% %>1.4 JSP注释输入以下代码,访问你的JSP查看页面源文件,你看到了什么?说明什么问题?<!- <%=new Date().toString() %>-><%- <%=new Date().toString() %>-%>2 JSP指令2.1 include指令(1)新建Included.jsp页面,在页面中输入以下代码,而且只保留如下代码:<% int a=5, b=8, c=6;out.println("<h1>Hello World!</h1>");%>(2)编写Including.jsp页面,在其中输入以下代码:<% include file="Included.jsp" %>并在<body>中输入以下代码:<%=a+b+c %>(3) 启动Tomcat服务器,访问Including.jsp,观察结果。3 JSP动作3.1 include动作新建Including2.jsp页面,在其中输入以下代码:<jsp:include page="Included.jsp"></jsp:include> <%=a+b+c %>观察编辑器有什么提示?并想一想,include指令和include动作有什么异同?3.2 forward动作(1)新建ForwardDemo.jsp页面,并输入以下代码:<% request.setAttribute("userName", "JSP Practice Referece Book"); pageContext.setAttribute("userName","JSP Practice Referece Book", pageContext.PAGE_SCOPE); %> <jsp:forward page="Forwarded.jsp"></jsp:forward>(2)新建Forwarded.jsp,并输入以下代码:<h1>Forwarded.jsp</h1> <%=request.getAttribute("userName") %><br/> <%=pageContext.getAttribute("userName",pageContext.PAGE_SCOPE) %>(3)访问ForwardDemo.jsp观察结果,你能得出什么结论?3.3 useBean动作、setProperty动作和getProperty动作(1)在项目的src目录下新建com.phoenix.test包,并在该包在新建类Student,并输入以下代码public class Student private Long id;private String name;/getters and setters(2)编写StudentInfo.jsp页面,输入以下内容。<form action="StudentInfoHandle.jsp"> 学号:<input type="text" name="id"/><br/> 姓名:<input type="text" name="name"/><br/> <input type="submit" value="提交"/> </form>(3)编写StudentInfoHandle.jsp,输入以下内容。<jsp:useBean id="stu" class="com.phoenix.test.Student"></jsp:useBean> <jsp:setProperty name="stu" property="*"/> <h1>学生信息</h1> 学号:<jsp:getProperty name="stu" property="id"/><br/> 姓名:<jsp:getProperty name="stu" property="name"/><br/>(4)运行StudentInfo.jsp,输入学号和姓名并提交,观察结果。(5)*观察Tomcat服务器webapps目录下的Demo项目文件夹的结构,Student.class在什么文件夹下?由此你得出什么结论?为了能够输入中文,需要对Tomcat配置文件作修改,在Tomcat安装目录confserver.xml中找到以下内容,<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>,并在其中添加URIEncoding="utf-8"。4 application对象新建ApplicationDemo.jsp页面,输入以下代码,观察运行结果。<% Integer i = 0; i = (Integer) application.getAttribute("count"); if (null = i) application.setAttribute("count", 1); out.println("<h1>你是第1位访问者</h1>"); else +i; application.setAttribute("count",i); out.println("<h1>你是第"+i+"位访问者</h1>"); %>结果说明了application对象的作用范围是什么?【实验报告】1 page指令都有哪些属性,每个属性的意义是什么?2 taglib指令的作用是什么?指令格式是什么?3本实验未出现的JSP内置对象还有哪些,请简述他们的意义和作用,并模仿对面给出的例子,自己对每个对象写一个JSP实例。实验2 JSP文件上传与下载【实验目的】1、掌握利用第三方组件(jspSmartUpload)实现JSP文件上传和下载;2、掌握jspSmartUpload提供的API。【实验环境】Eclipse 集成开发平台、Tomcat服务器;jsmartcom_zh_CN.jar文件。【实验指导】要使用第三方组件,必须将支持的jar包拷贝到项目的WEB-Inf中lib目录下,或者拷贝到Tomcat安装目录的lib目录下。1 文件上传1.1新建FileUpload.jsp文件,输入以下代码。<form action="FileUploadHandle.jsp" method="post" enctype="multipart/form-data"> <p>选择上传文件</p> <p>上传文件:<input type="file" name="myFile"/></p> <p><input type="submit" value="上传"/></p> </form>1.2新建FileUploadHandle.jsp实现文件上传。<!- 使用page指令导入所需要的包 -><% page import="com.jspsmart.upload.*" %><% SmartUpload myUpload = new SmartUpload(); /上传文件初始化 myUpload.initialize(pageContext); /设置上传文件最大限制100K myUpload.setMaxFileSize(100*1024); /设置允许上传的文件类型 myUpload.setAllowedFilesList("jpg,txt"); /设置禁止上传的文件类型 myUpload.setDeniedFilesList("exe,bat,jsp"); /实现文件上传 myUpload.upload(); /保存上传的文件 int count = myUpload.save("/upload"); /上传文件的信息 for (int i=0; i<myUpload.getFiles().getCount();i+) File file = myUpload.getFiles().getFile(i); out.println("表单项名称:"+file.getFieldName()+ ",文件长度:"+file.getSize()+ ",文件名:"+file.getFilePathName()+ ",扩展名:"+file.getFileExt()+ ",文件全名"+file.getFilePathName(); %>1.3在WebContent目录下新建upload文件夹。1.4执行FileUpload.jsp,观察结果。2 文件下载2.1新建FileDownload.jsp页面,输入以下代码。<p>文件下载</p> <p>请点击<a href="FileDownloadHandle.jsp">此处</a>下载文件</p>2.2新建FileDownloadHandle.jsp页面,输入以下代码。<% page import="com.jspsmart.upload.*" %><%/ 新建一个SmartUpload对象SmartUpload su = new SmartUpload();/ 初始化su.initialize(pageContext);/ 设定contentDisposition为null以禁止浏览器自动打开文件,/保证点击链接后是下载文件。若不设定,则下载的文件扩展名为/doc时,浏览器将自动用word打开它。扩展名为pdf时,/浏览器将用acrobat打开。su.setContentDisposition(null);/ 下载文件String file = request.getParameter("fileURL");su.downloadFile(file);%>2.3在Tomcat安装目录webapps你的项目名upload文件夹下,新建Test.txt,并输入一些内容。2.4运行你写的JSP,将upload/Test.txt信息传给jsp,观察结果。【实验报告】写一个实现动态下载文件的JSP程序(就是用户能够选择(或指定)下载文件)。用户只能上传图片格式的文件实例uploadimage.jsp<% page contentType="text/html;charset=gb2312" language="java" import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*"%><%SmartUpload mySmartUpload =new SmartUpload();long file_size_max=;String fileName2="",ext="",testvar=""String url="upload/" /应保证在根目录中有此目录的存在(也就是说需要自己建立相应的文件夹)/初始化mySmartUpload.initialize(pageContext);/只允许上载此类文件try mySmartUpload.setAllowedFilesList("jpg,gif");/此处的文件格式可以根据需要自己修改/上载文件mySmartUpload.upload(); catch (Exception e)%><SCRIPT language=javascript>alert("只允许上传.jpg和.gif类型图片文件");window.location='upload.htm'</script><%trycom.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);if (myFile.isMissing()%><SCRIPT language=javascript>alert("请先选择要上传的文件");window.location='upload.htm'</script><%else/String myFileName=myFile.getFileName(); /取得上载的文件的文件名ext= myFile.getFileExt(); /取得后缀名int file_size=myFile.getSize(); /取得文件的大小String saveurl=""if(file_size<file_size_max)/更改文件名,取得当前上传时间的毫秒数值Calendar calendar = Calendar.getInstance();String filename = String.valueOf(calendar.getTimeInMillis();saveurl=application.getRealPath("/")+url;saveurl+=filename+"."+ext; /保存路径myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL);out.print(saveurl);String ret = "parent.HtmlEdit.focus();"ret += "var range = parent.HtmlEdit.document.selection.createRange();" ;ret += "range.pasteHTML('<img src="" + request.getContextPath() + "/upload/" + filename + "." + ext + "">');" ;ret += "alert('上传成功!');"ret += "window.location='upload.htm'"out.print("<script language=javascript>" + ret + "</script>");catch (Exception e)out.print(e.toString();%>实验3 Servlet应用【实验目的】1、熟悉Servlet接口及其中规定的方法和意义;2、掌握Servlet编写、部署和运行。【实验环境】Eclipse 集成开发平台、Tomcat服务器。【实验指导】实现Servlet有几种方法:(1)实现Servlet接口;(2)继承HttpServlet类;(3)继承GenericServlet类。一般情况下,需要继承HttpServlet或GenericServlet类,因为这样可以不必考虑与容器的交互。GenericServlet可以处理各种网络请求,而HttpServlet只能处理Http请求。1 编写一个Servlet(1)新建ServletReq.jsp页面,输入以下代码。<form action="firstServlet"> <p>姓名:<input type="text" name="userName"/></p> <p><input type="submit" value="提交"/></p> </form>(2)在com.test包下新建一个类FirstServlet,并使它继承HttpServlet类,写入doGet和doPost方法。package com.test;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class FirstServlet extends HttpServlet Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException doPost(req, resp);Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException String userName = req.getParameter("userName");userName = "Hello "+userName;req.setAttribute("userName",userName);req.getRequestDispatcher("/Success.jsp").forward(req, resp);(3)新建Success.jsp,作为Servlet执行完毕后跳转的目标页面。<h1><%=request.getAttribute("userName") %></h1>2 部署Servlet观察使用标注和使用web.xml的不同形式。如果使用web.xml,在项目的WebContentWEB-INFweb.xml文件中,添加以下代码。<servlet><servlet-name>FirstServlet</servlet-name><servlet-class>com.test.FirstServlet</servlet-class></servlet><servlet-mapping><servlet-name>FirstServlet</servlet-name><url-pattern>/firstServlet</url-pattern></servlet-mapping>3 执行Servlet部署项目(注意只要修改了配置文件,就要重新部署项目,并重启服务器)启动服务器,请求ServletReq.jsp页面,在其中输入姓名,提交观察运行结果。【实验报告】1、试述Servlet接口的定义,及其中每个方法的意义。2、试着将部署中的<servlet>和<servlet-mapping>中的<servlet-name>都改为aaa,重新部署并运行项目,你得到什么启示?3、编写一个的Servlet,部署并运行它。实验4 MVC综合案例【实验目的】1、掌握基本SQL语句的使用;2、掌握实际开发中软件结构设计;3、理解MVC模式在软件结构设计中的运用;4、掌握Servlet、JavaBean和JSP在软件开发中的地位、作用及其相互关系;5、掌握JSP数据库连接与操作;6、掌握JSP开发应用程序的一般方法。7、掌握Filter的编写、部署、配置和应用。【实验环境】Eclipse集成开发平台、Tomcat服务器和MySQL数据库。【实验指导】本实验使用MVC实现学生信息管理系统的基本功能。在MVC模式中,倡导控制、模型(逻辑)和视图分离,在JSP开发的系统中,Servlet用于控制系统的运行流程,JavaBean用于业务逻辑处理、数据传输和数据持久化,而JSP用于显示系统的处理结果。相应的软件结构也分为4层:表现层、控制层、逻辑层和持久层,另有数据传输层在各层之间传递数据。1 框架设计在Eclipse中新建一个Web项目,并在src目录下包含以下Java包:com.dao:用于存放系统中用到的实体类,即持久化的类,和数据库中的某个表相对应;com. servlet: 用于存放系统中的所有的Servlet,相应于控制层;com.util:用于存放系统中的所有的业务处理接口(类),相应于业务逻辑层。2 创建数据库在数据库设计中,为保证系统最佳的兼容性,应使所有的名称,如数据库名、数据表名、字段名等,符合C标识符的命名原则。设计数据库表的字段时,应根据需求,采用最佳的数据类型。创建school数据库,设计实现role(权限)、login(登录)、student(学生)、教师(teacher)表等。role包括id、name。login包括name(登录名)、password(密码)、role(权限)信息。 student和teacher表用于保存和教师与学生相关的所有信息。student至少包含学号、姓名等,teacher至少包含员工号、姓名等。MySQL的操作和相关语句如下:打开开始->所有程序->MySql->MySQL Command Line Client界面输入密码:,默认的系统管理员的用户名:root create database school; 创建数据库show databases; 显示现有的所有数据库use school; 进入到school数据库中create table role( id tinyint primary key,name varchar(10);describe role; 查看role表的结构create table login( name varchar(20) primary key, password char(8), role tinyint, foreign key(role) references role(id);或创建login表时,不设置foreign key的约束,通过alter table(修改表)的语句修改外键信息。alter table student add constraint foreign key (role) references role (id);show tables; 查看数据库中的表drop table login; 删除login表drop database school; 删除数据库schoolinsert into role values(1,”admin”);insert into login values(“aaa”,”aaa”,1);select * from login;3 设计JavaBean,获取数据库连接在com.dao包中新建GetConnection类,输入以下代码。试回顾一下,Java连接数据库的内容。Import java.sql.*;public class GetConnection public static final String CLASSNAME = “com.mysql.jdbc.Driver”; /驱动程序public static final String URL = “jdbc:mysql:/localhost:3306/school”