版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 Java EE基础学习目标1 理解JavaEE技术概念2 熟悉Java EE技术体系3 理解JavaEE开发基本原理4 掌握Java EE的开发环境的安装、配置方法。本章内容:1 Java EE概念 2 Java EE特点3 Java EE的开发环境4 MyEclipse使用1.1Java EE简介 Java EE是目前广泛使用的企业级应用开发技术架构,以其稳定的性能,良好的开放性及严格的安全性而著称。对于信息化要求较高的证券,电信,银行等行业中都有广泛的应用。Java语言是Java EE开发的基础,整个Java EE都是构建在Java基础之上,掌握好Java语言,对于学习Java E
2、E是非常有必要的。Java 技术系列的三个版本Java技术系列一共有三个版本,分别是:1JavaSE:Java Standard Edition,Java标准版,适用于Java小程序和独立桌面应用程序开发。2Java EE:Java Enterprise Edition,Java企业版,适用于服务器端程序和企业应用软件的开发。3JavaME:Java Micro Edition:Java微型版,适用于小型设备、独立设备、互联网设备、嵌入式设备的程序开发。Java EEJava SEJava MEJVMCVM/KVM1.1.1 什么是Java EE 什么是JavaEE?从技术开发的角度来看,Ja
3、vaEE并不是某一种技术,而是基于Java的专为解决企业应用的技术架构,即Framework。Java EE的核心是一组技术规范与指南,它使开发人员能够开发具有可移植性、安全性和可复用的企业级应用。Java EE基于标准的平台框架。,是用于开发、部署和管理N层结构、,面向Web的,以服务器为中心的企业级应用,。JavaEE良好定义和设计的体系结构保证了开发人员更多地将注意力集中于架构设计和业务逻辑上 。2、学习Java EE有较好的前景 从TIOBE 2016年11月主流开发语言调查结果可知,Java仍然是使用率第一的主流开发程序设计语言,Java语言主要应用在Java EE和Android两
4、个方向,且很多大型网站都采用Java EE开发,如淘宝网,等。Java EE也有较好的就业前景,和不错的薪酬待遇,根据权威招聘类网站的Java相关职位检索数据为例,仅北京每周都有1万多个,且待遇较好。3、Java EE技术体系 Java EE可分为重量级和轻量级开发两类,重量级即传统的EJB(Enterprise JavaBean)技术为代表应用开发,其中包含技术有EJB、JPA、JSF、RMI、JavaIDL等,应用服务器有:Websphere、Weblogic、Glassfish等,其性能稳定功能全面,结构如图所示,重量级的Java EE性能稳定功能全面,但开发成本较高,周期较长,一般只有
5、大型企业才能承担得起。学习Java EE技术路线(1) JSP基础(2)JSP+JavaBean(3)JSP+JavaBean+Servlet(4)JSP+Struts+JavaBean(5)JSP+Struts+ Hibernate(6)Spring + Struts + Hibernate1.2 Java EE开发环境配置 Java EE开发需要安装Java运行环境JDK,IDE工具,和服务器等。首先需要安装的就是JDK,JDK是开发及运行Java程序的基础平台。1 安装JDK,配置JDK环境变量2 安装Tomcat3 安装MyEclipse1.2.1 JDK安装在浏览器中地址栏中输入:/
6、,从窗口中可以看到目前JDK最新版本是8u121,在下面区域中有JDK下载链接,读者可根据自己的操作系统情况选择,如果是32位Windows系统单击jdk-8u121-windows-i586.exe,64位Windows系统则点击jdk-8u121-windows-x64.exe下载,图所示。配置环境变量在如图所示的对话框中,对path环境变量增加JDK路径配置,这里输入“path”。path表示Java在运行时,如果需要相关命令可以到path的路径下寻找。在变量值文本框中输入JDK安装路径下bin文件夹的所在路径,如输入“,; C:Program FilesJavajdk1.8.0_121
7、;”,变量值由三部分构成,“,”表示在当前目录下寻找,“;”表示不同路径分隔符,C:Program FilesJava jdk1.8.0_121bin表示在该目录下寻找。 1.2.2 Tomcat安装与配置打开浏览器输入地址:/download-80.cgi,进入Tomcat页面,如图所示。选择Windows操作系统平台,单击Windows Service Installer(pgp, md5)超级链接下载。 1.2.3 安装MyEclipseEclipse是IBM推出的开放源码的通用开发平台。它支持包括Java在内的多种开发语言。Eclipse采用插件机制,使一种可扩展的、可配置的集成开发环
8、境(IDE)。MyEclipse本质上是Eclipse插件。其企业级开发平台(MyEclipse Enterprise Workbench)是功能强大的Java EE集成开发环境,在其上可以进行代码编写、配置、调试、发布等工作,支持HTML、JavaScript、CSS、JSF、Spring、Struts、Hibernate等开发。下面对MyEclipse的安装配置、使用方法进行概要介绍。从MyEclipse官网()下载MyElipse企业级开发平台。在列表中选择所用的平台的安装包下载,本书的案例也是在MyEclipse实现的,MyEclipse从官网下载安装包执行文件myeclipse-20
9、16-ci-6-offline-installer-windows.exe,按提示选择安装路径,其余选项可以按默认进行安装。在此过程中会自动搜索JDK进行环境配置,或者使用自带的JDK。安装完后,Windows下选择【开始】【所有程序】【MyEclipse】【MyEclipse 2016】【MyEclipse 2016 CI】,启动MyEclipse 2016环境。初次启动会要求选择一个工作区(Workspace),如图1.21所示即用于存放用户项目(所开发程序)的地方,可以选择默认,但还是推荐在其他盘设置文件夹进行存放。MyEclipse界面主要可以分成5个部分:(1)菜单栏窗体顶部是菜单栏
10、,包含主菜单(如File)和其所属的菜单项(如FileNew),菜单项下面还可以有子菜单,如图所示。(2)工具栏位于菜单栏下面的是工具栏,如图所示。(3)视图切换器位于工具栏最右侧的是MyEclipse特有的工作视图切换器,如图1,图2所示,它可以显示多个工作视图以供切换。(4)视图视图是显示在主界面中的一个小窗口,可以单独最大化、最小化,调整显示大小、位置或关闭。除了菜单栏、工具栏和状态栏之外,MyEclipse的界面就是由这样一个个小窗口组合起来的,像拼图一样构成了MyEclipse界面的主体。如图所示为一个大纲视图。(5)编辑区域在界面的中央会显示文件编辑器及其中的程序代码。这个编辑器与
11、视图非常相似,也能最大化和最小化,若打开的是JSP源文件,还会在编辑器上半部窗口中实时地显示出页面的预览效果,如图所示。1.3 第一个Java EE 程序【例1-1】第一个Java EE程序打开MyEclipse,选择菜单【File】-【New】-【Web Project】,新建一个Web项目,如图1所示,项目名称:Chap1-1 Demo1,如图2所示。在【New Web Project】对话框中输入项目名后单击【Finish】按钮,新建项目后在窗口左侧【Package Exploer】面板中可看见刚刚建立的Chap1-1 Demo1项目结构,如图所示。一般MyEclipse的Web项目可以
12、分成3部分,即源代码文件夹src文件夹,项目所引用的库,和WebRoot文件夹部分;其中src文件夹用于存放项目中源代码,WebRoot文件夹是Web应用的顶层目录,用于存放Web各类资源,在WebRoot下有二个非常重要文件夹:WEB-INF和META-INF,这俩个文件夹不能随意修改或删除。其中WEB-INF文件夹是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录,其目录结构如图1.31所示。WEB-INF文件夹下通常有web.xml文件、classes文件夹、tags文件夹、lib文件夹。web.xml文件:Java EE项目中非常重要的配置文件。cl
13、asses文件夹:存放src目录中编译后的class文件。Tags文件夹: 存放标记库实现类文件Lib文件夹: 存放项目中调用到的库或jar包。双击index.jsp页面,编写如图1.33所示代码。如图所示:在【Package Exploer】面板中选中该项目,鼠标右键单击,在右键菜单中选中【Run As】【 MyEclipse Server Application】,或者单击工具栏上【Run As】按钮,在弹出的【Server Selection】对话框选中MyEclipse Tomcat 7,如图所示。WEB-INFlibclassestags存放Web.xml及JSP网页文件存放项目中调
14、用到Jar库文件存放项目中编译后class文件存放项目中调用到tag标签库Java Web项目结构第2章 Java EE基础本章内容 1 JSP页面构成 2 JSP实现原理 3 JSP常用指令 4 JSP内置对象 2.1 JSP页面介绍JSP是JavaEE中实现Web页面的基础技术,也是掌握JavaEE使用的最基本技术,JSP(Java Server Page)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态技术标准(SUN公司已在2009年4月被甲骨文公司收购)。JSP是一种实现普通静态HTML和动态HTML混合编码的技术。JSP页面文件通常以.jsp为扩展名,而
15、且可以安装到任何能够存放普通Web页面的地方。虽然从代码编写来看,JSP页面更像普通Web页面而不像Servlet,但实际上,JSP页面第一次被访问时,会由JSP引擎自动编译成Servlet,然后开始执行,以后每次调用时,都是直接执行编译好的Servlet而不需要重新编译。JSP页面原理嵌入执行JSP应用服务器客户端124返回页面信息Java脚本JSP页面 JSP页面构成 输出当前日期 你好,今天是 2.2 JSP基本语法1脚本代码JSP脚本代码是嵌入到JSP页面中的Java代码,简称JSP脚本,在客户端浏览器中不可见。它们被服务器执行,然后由服务器将执行结果与HTML标记一起发送给客户端进行
16、显示。通过执行JSP脚本,可以在该页面生成动态的内容。例:计算1到10的和。1到10求和% int sum=0;for(int i=1;i2表达式JSP表达式主要用于数据的输出。它可以向页面输出内容以显示给用户,还可以用来动态地指定HTML标记中属性的值。格式:【例2.1】:表达式的使用新建一JSP网页,输入如下代码:表达式的值: 3声明声明语句可以在JSP页中定义方法或变量,这些方法和变量可被同一页面的其他代码访问。JSP 语法格式如下:2.2.2 JSP指令1page指令page指令即页面指令,可以定义在整个JSP页面范围内有效的属性,其使用格式如下:2Include指令Include指令
17、用来向当前JSP页面静态插入一个文件,这个静态文件可以是html文件、jsp文件或其他文本文件或者只是一段java代码。Include指令在JSP页面转换阶段完成包含,JSP编译器在碰到include指令时,就会读入包含的文件,插入include位置,相当于多个文件共同组成一个jsp页面。3taglib指令taglib指令声明此JSP文件使用了自定义标签库,同时引用标签库,并且指定了它们的标签前缀。语法格式:taglib指令会在第章进行详细介绍。JSP中的page指令通过设置内部的多个属性定义整个页面的属性常用属性45/53语法属性描述默认值language指定JSP页面使用的脚本语言java
18、import通过该属性来引用脚本语言中使用到的类文件无contentType用来指定JSP页面所采用的编码方式text/html, ISO-8859-1计算求和两个数的求和结果为:2.3 JSP内置对象为了Web应用程序开发的方便,在JSP页面中内置了一些默认的对象,这些对象不需要预先声明就可以在脚本代码和表达式中随意使用。JSP提供的内置对象共有9个,这些内置对象从功能上可以分为4类,分别是:1输出输入对象:request对象、response对象、out对象2与属性作用域相关对象:pageContext对象、session对象、application对象3Servlet相关对象:page对
19、象、config对象4错误处理对象:exception对象常用的JSP内置对象applicationoutsessionresponserequest常用的JSP内置对象2.3.1 out对象out对象是javax.servlet.jsp.jspWriter类的实例,out对象与Java中的System.out功能基本相同,out对象主要有两方面的功能。1向客户端输出各类型数据的内容。2对服务器上输出缓冲区进行管理。 out对象常用方法方 法 说 明 clear() 清空缓冲区 clearBuffer() 清空当前区的内容 close() 先刷新流,然后关闭流 flush() 刷新流 getB
20、ufferSize() 以字节为单位返回缓冲区的大小 getRemaining() 返回缓冲区中没有使用的字符的数量 isAutoFlush() 返回布尔值,自动刷新还是在缓冲区溢出时抛出IOException异常 request对象request对象是JSP编程中最常用的对象,request对象用来读取客户端请求发送过来的各类数据或流,例如在FORM表单中填写的信息等,通过调用request对象相应的方法可以获取关于客户请求的信息。ruquest对象的数据类型是javax.servlet.http.HttpServletRequest。 JSP 页面request 对象客户端 请求请求信息r
21、equest对象常用方法方法名称 说明String getParameter(String name)根据表单组件名称获取提交数据String getParameterValues(String name)获取表单组件对应多个值时的请求数据 void setCharacterEncoding(String charset)指定每个请求的编码RequestDispatcher getRequestDispatcher(String path)返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求新建一个JSP网页,名为index.jsp,输入如下图2.27所
22、示代码。图 2.27 index.jsp页面代码【例2.5】用户注册表单的读取新建reg_deal.jsp网页,输入代码。 % String uname= toChinese(request.getParameter(uname); String password=request.getParameter(passwd); String sex,s=request.getParameter(xingbie); String Email=request.getParameter(email); String info=request.getParameter(info); if(s.equals
23、(1) sex=男; else sex=女; String hobby=request.getParameterValues(hobby); String aihao=您的爱好是:; for(int i=0;ihobby.length;i+) aihao=aihao+toChinese(hobbyi)+ ; out.println(注册信息:); out.println(用户名:+uname+密码:+password+性别:+sex+Email:+Email+个人说明:+info); out.println(+aihao);%运行效果2.3.3 response对象response对象与req
24、uest对象相对应,其主要作用是用于响应客户端请求。response对象是javax.servlet.http.HttpServletResponse接口类的实例它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。response对象功能主要有三个方面:(1)重定向;(2)设定HTTP响应头部;(3)向客户端浏览器输出二进制流,实现下载功能。response对象常用方法方 法 说 明 sendError(int number) 使用指定的状态码向客户发送错误响应 sendError(int number,String msg) 使用指定的状态码和描述性消息向客户发送错误响应 sendR
25、edirect(String location) 使用指定的重定向位置URL想客户发送重定向响应,可以使用相对URL 2.3.4 session对象HTTP协议是一种无状态协议,当完成用户的一次请求和响应后就会断开连接,此时服务器端不会保留此次连接的有关信息,当用户进行下一次连接时,服务器无法判断这一次连接和以前的连接是否属于同一用户。为解决这一问题,JSP提供了一个session对象,让服务器和客户端之间一直保持连接,直到客户端主动关闭或超时(一般为30分钟)无反应才会取消这次会话。使用session的这一特性,可以在session中保存用户名、用户权限、订单信息等需要持续存在的内容,实现同
26、一用户在访问Web站点时在多个页面间共享信息。【例2.9】用户登录打开 MyEclipse新建一个WebProject项目,建立一个名为login.jsp网页,在该网页中制作一个如图2.43所示用户登录表单。新建login_deal.jsp网页,输入如图所示代码。新建index.jsp网页,输入如图所示代码。2.3.6 application对象application对象用于保存应用程序在服务器上的全局数据。当服务器启动时就会创建一个application对象,只要没有关闭服务器,该对象就一直存在。application对象与session对象有所区别,session对象和用户会话相关,不同用
27、户的session是完全不同的对象,而用户的application对象都是相同的一个对象,即共享这个内置的application对象。【例2.10】留言板打开 MyEclipse新建一个WebProject项目,建立一个名为index.jsp网页,在网页中制作如图2.47所示表单,表单中有2个文本框,name属性值分别是:name、conten。表单的action属性: deal.jsp;method属性:post,并在表单前插入如图所示代码。新建一个网页名为deal.jsp,在其中输入如图所示代码。第3章 JDBC基础本章内容 JDBC原理 JDBC常用接口 JDBC访问数据库 数据库的查询
28、、添加、修改、删除 其他数据库访问3.1 JDBC概述无论是企业级应用系统,还是信息类管理系统,其开发的核心都是围绕数据库进行的,数据库访问技术是计算机软件开发中的一个重要技术,在JavaEE体系中有多种数据库访问技术,其中最为简单、基础的就是JDBC数据库访问技术。JDBC架构JDBC由两层构成,一层是JDBC API,负责在Java应用程序与JDBC驱动程序管理器之间进行通信,负责发送程序中的SQL语句。其下一层是JDBC驱动程序API,与实际连接数据库的第三方驱动程序进行通信,返回查询信息或者执行规定的操作,如图所示。图中显示了数据库驱动程序与JDBC驱动管理程序,及JDBC系统的API
29、库与Java应用程序的位置及调用关系。3.2 JDBC基本操作3.2.1 建立ODBC数据源及访问过程使用ODBC数据源前,首先要配置ODBC数据源,将需要访问的数据库的访问路径信息在ODBC中进行配置,ODBC支持多种数据库,例如Sql Server,Oracle、Access等,在这里我们以最简单的Access为例,来讲解ODBC的配置,本章的数据库操作都是基于这个数据源的。(1)打开Access建立一个名为user.mdb的数据库文件,保存在D盘根目录下。在其中建立一张user表,其字段结构如图所示,数据表如图所示,并在其中输入一些记录。(2)配置ODBC数据源,以Windows7 32
30、Bit系统为例,打开【控制面板】-【管理工具】找到【数据源(ODBC)】,如图所示。双击打开,点击ODBC数据源管理中【用户DSN】选项卡,单击选项卡中【添加】按钮,在弹出的【创建数据源】对话框中列表选择Microsoft Access Driver (*.MDB),并单击【完成】按钮,注意:在这个对话框中可选择其他类型数据库,这里仅是以Access为例。在弹出来的【ODBC Microsoft Access安装】对话框中输入数据源名称:DSUser,单击【选择】按钮,选择D盘根目录下存放的user.mdb数据库文件。【例3.1】完整代码如下:% try Class.forName(sun.j
31、dbc.odbc.JdbcOdbcDriver);/第一步Connection con=DriverManager.getConnection(jdbc:odbc:DSUser);/Statement smt=con.createStatement();/第三步ResultSet rs=smt.executeQuery(select * from user );int id,i=1;while(rs.next() out.print(用户编号:+rs.getInt(id)+ 姓名:+rs.getString(name)+ 性别:+rs.getString(sex)+ Email:+rs.get
32、String(Email); catch(Exception e) e.printStackTrace(); 【例3.2】用户注册在MyEclipse中打开Ch3ODBUserDemo项目,新建reg.jsp网页,在这个网页中制作如图所示用户注册表单。表单的action属性:reg_user.jsp;method属性:post。如图所示新建reg_user.jsp网页,使用page指令导入java.sql包, 并输入如图所示代码。3.3 JDBC优化技术3.3.1 PreparedStatement接口PreparedStatement是一种预编译处理,java.sql.PreparedSta
33、tement接口继承于Statement接口,是Statement接口的扩展,用来执行动态的sql语句,即包含参数的SQL语句。通过PreparedStatement实例执行的动态SQL语句,将被预编译并保存到PreparedStatement实例中,从而可以反复并且高效地执行该SQL语句。方 法 名 称功 能 描 述executeQuery()执行前面包含参数的动态SELECT语句,并返回一个永远不能为null的ResultSet实例executeUpdate()执行前面包含参数的动态INSERT、UPDATE或DELETE语句,并返回一个int型数值,为同步更新记录的条数clearPara
34、meters()清除当前所有参数的值setXxx()为指定参数设置Xxx型值close()立即释放Statement实例占用的数据库和JDBC资源,即关闭Statement实例第4章 JavaBean本章内容JavaBean的种类;JavaBean的规范;JavaBean在JSP中的应用;JavaBean属性值的赋值;JavaBean属性值的读取;JavaBean对JSP代码的优化。4.1 JavaBean概述在JavaEE的初级阶段,整个系统功能由JSP网页实现出来,并没有对代码进行逻辑层次划分,例如,上一章案例 “用户管理系统”,整个系统所有功能都是由各个JSP页面实现,而页面中存在大量重
35、复、烦琐、冗余高的代码,如图所示。4.2 JavaBean定义及应用4.2.1 JavaBean技术规范JavaBean在Java中可以是一个普通的Java类,但编写时要遵循JavaBean的代码规范,具体规范如下。1.公共的无参构造方法一个JavaBean对象必须拥有一个公共类型、默认的无参构造方法,从而可以通过new关键字直接对其进行实例化。2.类的声明是非final类型当一个类声明为final类型时,它是不可以更改的,所以,JavaBean对象的声明应该是非final类型的。3.实现可序列接口JavaBean应该直接或间接实现java.io.Serializable接口,以支持序列化机制
36、。4.为属性声明访问器JavaBean中的属性应该设置为私有(private)类型,为了防止外部直接访问,它需要对外提供公共(public)的访问方法,也就是说需要为属性提供getter/setter方法。4.2.2 编写一个JavaBean在MyEclipse中编写JavaBean,可以先定义好属性,然后再调用【Source】菜单中【Generate Getters and Setters.】产生属性方法,如果使用JCreate等其他工具,也可直接输入属性方法。以上一章 “用户管理案例”用户数据为例,其JavaBean定义过程如下。(1)在src目录下新建com.bean包,然后新建User
37、类,如图所示。(2)单击【Source】菜单中【Generate Getters and Setters.】,单击Select All按钮,选择所有属性,单击OK按钮确认,如图所示。4.2.3 UseBean标签在JSP中使用JavaBean可以使用UseBean指令来调用JavaBean,UseBean指令格式如下。语法格式: 例如: 4.2.4 setProperty标签setProperty标签用于设置JavaBean对象中属性值,语法如下:例如: 输出:张三自动填充是将request对象中的参数名与JavaBean中属性名相同的,自动填入进去,语法如下:自动填充时setProperty
38、标签prperty属性值为*号。【例4.1】新建一个jsp网页,名为user.jsp。在网页中制作一个用户注册表单,效果如图所示。表单的action属性:user_deal.jsp;method属性:post。如图所示。表4-1 user.jsp表单中标签属性类型Name属性说明文本框name用户名文本框文本框password密码文本框repasswd再输入一次密码框单选框sex性别男单选框,value值为1单选框sex性别女单选框,value值为2文本框emailEmail文本框文本框infoInfo文本框,多行新建一个jsp网页,名为user_deal.jsp。在此页面中声明一个JavaB
39、ean对象u3,将user.jsp网页中提交到request对象中参数填充进u3,并输出演示,关键代码如下: % out.println(用户名:+u3.getName()+”); out.println(密码:+u3.getPassword()+”); out.println(性别:+u3.getSex()+”); out.println(Email:+u3.getEmail()+”); % 运行结果4.3 DAO和VO在上一章数据库案例“用户管理系统”中,系统中功能都是JSP页面中调用JDBC实现的,这样造成代码重复冗余高,且十分繁琐,不利于开发。在实际开发应用中,一般是将数据库的各类操作
40、封装到特定类中,而这个类一般叫DAO(Data Access Object)类或者叫数据访问层。JSP一般作为视图层,在视图层中调用DAO类提供的方法操作数据库。数据库中的数据库表,可根据表的结构建立对应的JavaBean,通常实现这一类JavaBean的类称为VO(Value Object)类,例如在本章前述案例建立的User类就是对应User表的VO类。VO类可以配合DAO类来使用,比如在DAO中查询某一用户,便可将查询到的用户信息封装成User对象,而JSP页面中也可直接使用这个User对象,从而降低代码的耦合度。以上一章中案例“用户管理系统”为例,将用户管理所需的功能和数据操作封装成2
41、个类,一个数据库类MyDB,将数据库对象封装其中;一个UserDAO类,将用户管理的操作封装其中,实现如下。(1)MyDB.javapackage com.daoimport java.sql.*;public class MyDB private Connection con; private PreparedStatement presmt; public MyDB() try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); con=DriverManager.getConnection(jdbc:odbc:JDBCB); catch(Except
42、ion e) public ResultSet query(String sql) try Statement smt=con.createStatement(); return smt.executeQuery(sql); catch(Exception e) e.printStackTrace(); return null; public void update(String sql) try Statement smt=con.createStatement(); smt.executeUpdate(sql); catch(Exception e) e.printStackTrace()
43、; public PreparedStatement getPreparedStatement(String sql) try return con.prepareStatement(sql); catch(Exception e) e.printStackTrace(); return null; (2)UserDao.javaimport java.sql.*;import java.util.*;import com.bean.*;public class UserDao public boolean Login(User us) /用户登录 MyDB mdb=new MyDB(); R
44、esultSet rs=mdb.query(select * from user where name=+us.getName()+ and password=+us.getPassword()+); try if(rs.next() return true; catch(Exception e) e.printStackTrace(); return false; public ArrayList getallUser() /获取所有用户信息 MyDB mdb=new MyDB(); ArrayList res=new ArrayList(); try ResultSet rs=mdb.qu
45、ery(select * from user); while(rs.next() User user=new User(); /实例化VO user.setId(rs.getInt(id); user.setName(rs.getString(name); user.setPassword(rs.getString(password); user.setEmail(rs.getString(email); user.setInfo(rs.getString(info); res.add(user); catch(Exception e) e.printStackTrace(); return
46、res; public int getcount() /获取用户数 MyDB mdb=new MyDB(); try ResultSet rs= mdb.query(select count(*) as t from user); rs.next(); return rs.getInt(t); catch(Exception e) e.printStackTrace(); return 0; public String regUser(User us) /用户注册 MyDB mdb=new MyDB(); try PreparedStatement psmt=mdb.getPreparedSt
47、atement(insert into user(name,password,sex,Email,info) values(?,?,?,?,?); psmt.setString(1, us.getName(); psmt.setString(2, us.getPassword(); psmt.setString(3, us.getSex(); psmt.setString(4, us.getEmail(); psmt.setString(5, us.getInfo(); psmt.executeUpdate(); return 用户添加成功; catch(Exception e) e.prin
48、tStackTrace(); return 失败; 【例4.2】用户登录,实现上面的UserDao类和MyDB类后,即可对上一章中用户管理系统进行优化。下面以用户登录为例,打开login_deal.jsp,把代码修改成如图所示。执行流程分析:用户首先在login.jsp页面,填入登录信息(用户名和密码),提交到login_deal.jsp页面request对象中,login_deal.jsp中JavaBean对象u2从request对象中按属性名与参数名相同进行填充。填充完成后,调用UserDao类对象ud中Login方法实现登录验证,执行流程如图所示。【例4.3】用户注册,应用JavaBea
49、n后可大大优化用户注册部分的代码,以例4.1为例,如图所示,修改user_deal.jsp页面代码。执行流程分析:用户在user.jsp页面填写注册信息,提交到user_deal.jsp页面request对象中,user_deal.jsp页面JavaBean对象u3从request对象中按属性名与参数名相同进行填充。填充完成后,调用UserDao类对象ud中regUser方法实现注册,执行流程如图所示第5章 Servlet基础本章内容1 Servlet原理及编写方法2 Servlet配置3 Servlet生命周期4 拦截器原理及其应用5 Servlet+JavaBean实现MVC模式5.1 什
50、么是Servlet Servlet是用Java编写的服务器端程序,运行在 Web 服务器或应用服务器上。它是来自 Web 浏览器或其他 HTTP 客户端的请求与 HTTP 服务器上的数据库或应用程序之间的中间层。Servlet仍然是一个普通的Java类,只是在Web服务器内部的、运行于服务器端的、独立于平台和协议的Java应用程序(以下简称Servlet),可以生成动态的Web。Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。Servlet的运行需要在web.xml中进行配置。Servlet的特点1 高效性Servlet采用了多线程的处理机制,有
51、效地节省了处理时间和资源分配,提高了处理效率。 2 开发的方便性 Servlet提供了大量的实用工具例程,用户可以非常方便地学习并在此基础上开发出所需的应用程序。 3强大的功能性 Servlet为用户提供了许多以往CGI很难实现的功能,这些强大的功能为用户的Web开发提供了很好的支持。4可移植性Servlet的定义和开发具有完善的标准。因此,Servlet不需修改或只需简单调整即可移植到Apache、Microsoft IIS等支持Servlet的Web服务器上。几乎所有的主流服务器都直接或通过插件支持Servlet。5安全性Servlet是由Java编写的,所以它可以使用Java的安全框架;
52、ServletAPI被实现为类型安全的;容器也会对Servlet的安全进行管理。5.1.1 如何实现ServletServlet架构由javax.servlet和javax.servlet.http两个Java包组成。在javax.servlet包中定义了所有的Servlet类都必须实行或扩展的通用接口和类。在javax.servlet.http包中定义了采用http通信的HttpServlet类。所有的Servlet 类都继承实现Servlet 接口。通常我们编写Servlet时并不需要直接去实现Servlet接口,而声明继承 javax.servlet.http.HttpServlet类间
53、接实现Servlet接口, HttpServlet是一个抽象类,HttpServlet类实现Servlet 接口。 5.1.2 Servlet代码结构所有的Servlet都源自于Servlet接口,Servlet接口在javax.servlet包下,Servlet接口定义了Servlet最基本的方法,该接口是ServletAPI的核心,在这个接口中有5个方法必须实现。(1)init()方法 (2)service()方法(3)destroy()方法(4)getServletConfig()方法(5)getServletInfo()方法实现Servlet过程(1)继承HttpServlet抽象类;
54、(2)覆盖HttpServlet的部分方法(如:service()、doGet()、doPost();(3)获取Http请求信息;(4)生成Http响应信息。(5)在web.xml文件编写配置【例5.1】第一个Servlet程序打开MyEclipse新建一个名为Chap5-1 ServletDemo1项目,选中的【src】文件夹,鼠标右键菜单选择【new】-【servlet】,如图5.2所示。在弹出的【Create a new Servlet】对话框中在package栏中输入包的名称(如com.servlet),在Name栏中输入Servlet的名称: firstServlet,然后点击【Ne
55、xt】按钮,如图5.3所示。在弹出的对话框【Create a new Servlet】中,Servlet/JSP Name栏给出Servlet的名称, Servlet/JSP Mapping URL栏给出要访问该Servlet的相对URL地址。如下图中Servlet/JSP Mapping URL是/first,则访问路径是http:/localhost:8080/ServletDemo1/first,单击【Finish】按钮确定,如图5.4所示。点击Finish按钮后,产生代码如图5.5所示,启动该项目,在浏览器窗口地址输入:02:8080/ServletDemo1/first,运行结果如图
56、5.5所示。5.2 Servlet生命周期虽然Servlet运行模式较为不同,需在服务器的容器中运行,但Servlet仍然是一个Java类,也就同样会有生命周期,下面就Servlet声明周期进行介绍:Servlet生命周期可分为,包括以下4个阶段:加载和实例化初始化:调用init()方法请求处理:调用service()方法服务终止:调用destroy()方法Servlet生命周期【例5.2】自启动Servlet打开上一个案例中Chap5-1 ServletDemo1项目,按例5.1步骤建立一个名为Timer的servlet,在创建面板实现方法栏中只勾选【init()和destroy()】方法,
57、如图5.7所示。按图5.8所示修改Timer类中init方法。public void init(ServletConfig config)throws ServletException super.init(config); javax.swing.Timer t = new javax.swing.Timer(1000,new ActionListener() public void actionPerformed(ActionEvent e) System.out.println(new Date(); ); t.start(); 打开web.xml文件修改,Timer的配置,增加属性,如
58、图5.9所示。5.3 Servlet配置创建了Servlet类后,还需要对Servlet进行配置,配置的目的是为了将创建的Servlet注册到Servlet容器之中,以方便Servlet容器对Servlet的调用。在Servlet 3.0以前的版本中,只能在web.xml文件中配置Servlet,而在Servlet 3.0中除了在web.xml文件中配置以外,还提供了利用注解来配置Servlet。下面将分别介绍这两种方法。1、在web.xml文件中配置Servlet2、采用注解配置Servlet5.4 Servlet与JSP内置对象内置对象可以方便实现Web应用中很多处理功能,JSP中内置对象
59、已经由Servlet编译器初始化,可直接访问使用;而Servlet中需要使用内置对象时,则需要用户自己初始化,表5-1有常用内置对象的类型及初始化方法。对象所属类型调用方法requestjavax.servlet.http.HttpServletRequestservice和doGet、doPost参数传入responsejavax.servlet.http.HttpServletResponseservice和doGet、doPost参数传入outjavax.servlet.jsp.JspWriterresponse.getWriter()sessionjavax.servlet.http.
60、HttpSessionrequest.getSession()applicationjavax.servlet.ServletContextthis.getServletContext()5.5 基于Servlet的MVC模式MVC设计模式最先是由Trygve Reenskaug提出的,并最先成功的应用在SmallTalk-80环境中,使许多交互和界面系统的构成基础。Microsoft的MFC基础类也遵循了MVC的思想。MVC把交互系统的组成分解成模型、视图、控制器三种部件,其结构如图5.11所示。第6章 Servlet高级应用本章内容:1过滤器原理及编写方法2 过滤器配置3 过滤器应用案例4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品流通企业驾驶员定期维护安全操作规程
- 健康生活的照片
- 物业小区绿化带火灾应急预案演练脚本
- 2026年护士执业资格考试题库(内科护理学)历年真题及答案
- 化工生产单位主要负责人日常检查安全操作规程
- 乙炔管道安装专项施工方案
- 破除人行道板及恢复专项工程施工组织设计方案
- 专科护士外出进修汇报
- 静脉输血及并发症处置
- 总结建设安全文化
- 2026年公务员考试公共基础知识法律常识试题库及答案
- 2026华为AIFW技术白皮书-华为
- 2026年广东省事业单位招聘考试《职业能力倾向测验》真题
- 2024版部编人教版初中语文古诗汇编(86首)
- 2026年行政执法人员资格考试必考重点知识题库及答案
- 电网、设备、作业三大风险联动管控机制的建立与运行
- 中医特色护理在皮肤疾病护理中的应用
- (正式版)T∕CADERM 7023-2025 医学救援用折叠方舱技术规范
- 广东深圳市物业发展(集团)股份有限公司招聘笔试题库2026
- 2026宜昌网格员试题
- 功能医学概论(医生版)
评论
0/150
提交评论