Java-EE技术课堂笔记_第1页
Java-EE技术课堂笔记_第2页
Java-EE技术课堂笔记_第3页
Java-EE技术课堂笔记_第4页
Java-EE技术课堂笔记_第5页
已阅读5页,还剩164页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaEE技术课堂笔记2015-9-5一、参考资料《设计模式》,GangofFour,theGOF二、学习方法1、动手实践2、学会学习 (1)总结 (2)对比 (3)学会使用搜索引擎,baidu,google3、团队合作精神:要有责任担当,为团队贡献自己的力量,为团队加分,即正能量。一、Web的概念及其发展1、WebHTML/JavaScript/CSS Web是一种应用程序的框架,是Client/Server架构的原型。C/S架构的优点和缺点:在C/S架构的基础上,又提出一种的架构Browser/Server。几个关于Web的术语:超文本(HyperText):是一种全局性的信息结构,可以将文档通过一些关键字建立链接(<ahref=”超链接地址”title=”提示信息”>关键字</a>)超媒体(HyperMedia):音频、视频、图像、文本,一个文档中不仅有超文本,还有上述信息,并且实现上述内容的组合。WWW:万维网(WorldWideWeb)是一种服务,是一种以Internet为基础的应用服务。HTTP协议:超文本传输协议,是工作OSI-RM第7层的应用层协议,实现服务器端与客户端之间的数据传输。HTTP协议是一种请求(Request)-响应(Response)式的服务。无状态的协议。2、Web技术的发展W3C:(1)静态页面技术:以HTML为基础的技术,缺乏用户与服务器,或者用户与用户之间的沟通,即缺乏人机交互。更新与维护Web页面任务繁重。(2)浏览器端与用户交互技术:依赖浏览器端与客户交互。比如说出现了JavaScript、JavaApplet、GIF等技术。但也有一些缺点:浏览器需要加载一些类库如ActiveX,导致胖客户端,程序运行效率降低。不同的浏览器对JavaScript支持不一致。(3)服务器端与服务交互技术:依赖服务器端技术实现人机交互。技术主要有:ASP(*.asp)/ASP.NET(*.aspx)、JSP(*.jsp)、PHP(*.php)几种技术组合:Linux+Apache+MySQL+PHP(LAMP),免费开源,主要用于中小型应用开发Linux+Apache+MySQL+Java/JSP,免费开源,收缩性强,跨平台,用于大中型应用开发.Windows+IIS+SQLServer+.NET,主要用于微软技术平台。JSP技术实质上以普通的HTML页面为基础,在这些页面上加入了一些Java代码,便成为了JSP页面。JSP页面在运行时将转换为Servlet.这3种技术的缺点:页面中掺杂了Java等代码,导致页面结构混乱,不利用人员分工。(4)基于Web的应用阶段出现了软件分层结构,软件之间的耦合降低了,代表技术有JavaEE(J2EE),.NET。基本的分层架构有3层,或者更多。三层结构主要是表现层(视图层View),模型层(Model)和控制层(Controller),即MVC模式。(5)Web2.0阶段O’Relly提出的一个概念。现有的相当应用有微博、社交网站,维基百科。特点:提高用户体验(UE,UserExperience)和人机交互。二、、JSP简介 JavaServerPages,是一种基于Java技术的动态网页开发技术。它在传统的HTML页面中添加一些Java程序段和JSP标记,从而构成的一种页面。<html><body>欢迎你,<%=username%><%out.print(“登录时间为:”);java.util.Datenow=newjava.util.Date();out.print(now);%></body></html>http://localhost:8080/ch1/page/first.jsp:80/index.htm 保存成扩展名为“.jsp”的名字即可。优点:它继承了Java的所有特性。比如跨平台,安全性,支持多线程等。另外,要注意JSP程序运行时必须依靠Web容器(WebContainer)、或者说是Web服务器(WebServer)三、Tomcat的安装与配置 Tomcat是一种支持JSP/JAVAEE技术的Web容器。可以到网站上免费下载,目前最新版为7.0。注意:安装Tomcat之前,必须先安装JDK。 一旦安装了Tomcat,在Windows上便以Windows服务的形式存在。Tomcat服务的启动:推荐以“手动方式”启动,可以在Windows服务中更改启动方式。Tomcat的目录结构:bin:可执行程序,Binary的缩写。conf:Configuration的缩写。该文件夹中放的都是Tomcat的配置文件,多以XML文件存在,如server.xml,web.xml。server.xml文件是有关Tomcat运行的参数信息都在该文件中保存。web.xml文件是保存Web应用程序运行的参数信息。如应用程序的首页、Servlet,Session有效期等。lib:该目录存放Tomcat的类库log:存放运行日志文件webapps:存放我们开发的应用程序,ROOT目录。work:存放我们开发的应用程序编译之后的字节码文件和java源代码,即.class文件和.java文件。验证Tomcat安装是否正确:启动Tomcat服务,然后在浏览器上输入http://localhost:8080(:8080),如看到提示页面,则安装正确。:80创建Tomcat的虚拟目录:在server.xml文件中,找到<Host>元素,然后在该元素中添加<Context>子元素,如: <Contextpath="test"docBase="g:/java"debug="0"reloadable="true"/>虚拟目录的名称为test,存放页面的目录为g:/java。此时访问该目录下second.jsp的路径为:http://localhost:8080/test/second.jsp四、搭建JavaWeb开发环境Eclipse/MyEclipse+Tomcat+MySQLIDE:IntegratedDevelopmentEnvironment集成开发环境1、在Eclipse中创建JavaWeb项目的步骤(1)通过File->DynamicWebProject(2)集成Tomcat,主要指定Tomcat的安装路径,注意到Tomcat的根目录即可。2、了解JavaWeb项目的目录结构src:存放我们编写Java类WebContent:存放项目中的前台资源:如HTML页面、JSP页面、JS文件、CSS文件、图片等。WebContent/WEB-INF/lib:存放项目运行需要的类库(JAR文件)WebContent/WEB-INF/web.xml:本项目运行的配置文件WebContent/META-INF:用来存放部署文件,Manifest.mf。注意:我们编写的JSP等文件,必须放在WebContent的根目录下面,或者可以WebContent目录下面新建一些文件夹并放到这些文件夹里面(推荐)。切忌不能将JSP文件放到WEB-INF或者META-INF文件夹下。3、Eclipse的使用技巧通过window->preferences-jspfiles可以设置JSP页面默认的字符编码,我们推荐使用UTF-8编码4、JavaWeb的URL结构http://localhost:8080/ch2/page/count.jspch2:是指我们开发的项目的虚拟目录名称,即<Context>元素的path属性值。page:是指ch2项目的一个目录名称count.jsp:指存放在page目录下的一个JSP页面五、开发第一个JSP程序 参见第二部分中的代码,注意有错误,需纠正。六、JSP运行原理首次运行JSP程序时,当客户端请求JSP页面如first.jsp时,要经历以下步骤:(1)tomcat引擎调用JSPParse将JSP页面转换为Java程序,如first_jsp.java;(2)Tomcat调用JDK的javac命令,将first_jsp.java编译为first_jsp.class;(3)Tomcat调用JDK的java命令,执行first_jsp.class程序(4)HTTP将程序的执行结果以响应的形式返送至客户端。如以后再运行时,第(1)(2)步省略,因此JSP程序首次运行时速度有些慢。几个问题:(1)TOMCAT服务器启动(2)JSP页面编码问题(3)设置TOMCAT虚拟目录与URL路径2015-9-10JSP语法基础HTTP协议/HTML回顾1、http协议的特点(1)请求-响应式的协议(2)无状态的协议,它不会保存用户的状态信息,保证用户的数据安全(3)面向无连接Uri:url2、html4.0回顾HTML的页面结构<html> <head></head> <body></body></html>三要素:<html>标识、头部、主体2、HMTL的标签分类双标签:有开始标签和闭合标签组成单标签:只有开始标签,没有闭合标签,<br>、<img>、<hr>标签还可以有属性:如<ahref=”url”title=””></a>HTML不区分大小写的。推荐使用小写。(1)<form> action属性:指定表单提交后跳转的目标页面。 method属性:可选,缺省为GET,有两个值可以使用GET|POST。一般来说,我们使用POST。Method属性,有以下几个地方需要关注表单的提交方式,如果是get方式,表单各个输入域的值将会显示到浏览器的地址栏上,而POST方式则不会。Servlet,如果要调用Servlet的doPost()方法,则表单的method属性值必须为post,同理,要调用Servlet的doGet()方法,method属性值必须为get。表单中的输入域含有中文且出现乱码,一般要求设置method属性为post。 enctype属性:可选,如果表单中有文件上传时,必须使用该属性,而且属性值应multipart/form-data。另外,该属性还可以是其他值,如text/plain。<formaction=”submit.jst”method=”post”enctype=”multipart/form-data”>…</form>(2)<input>该标签一般应该嵌套放在<form>标签内。使用该标签可以定义按钮、提交按钮、单行文本框、密码框、单选框等。文本框:<inputtype=”text”name=”username”/>密码框:<inputtype=”password”name=”pass”/>单选框:<inputtype=”radio”name=”sex”value=”male”>男</input>复选框:<inputtype=”checkbox”name=”hobby”value=”music”>音乐</input>文件上传:<inputtype=”file”name=”upload”/>提交按钮:<inputtype=”submit”/>重置按钮:<inputtype=”reset”/>普通按钮:<inputtype=”button”/>(3)<select>与<option>这两个标签结合起来使用可以做下拉列表框<selectname=”usertype”> <optionvalue=”1”>One</option> <optionvalue=”2”>Two</option></select><select>元素的主要属性:size:设置下拉列表框显示的选项个数multiple:设置是否支持多选multiple=”multiple”(4)<optgroup> <selectname="number"> <optgrouplabel="数字"> <optionvalue="1">One</option> <optionvalue="2">Two</option> <optionvalue="3">Three</option> </optgroup> <optgrouplabel="颜色"> <optionvalue="Red">红</option> <optionvalue="Yellow">黄</option> <optionvalue="Blue">蓝</option> </optgroup> </select>(5)<div>是一个块标签,用该标签可以代替<table>,使用<div>定位页面中元素的位置。学号、姓名、性别、专业、籍贯、个人简介<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><scripttype="text/javascript"> functionvalidateForm() { if(document.student.sno.value=="") { alert("学号不能为空!"); return; } if(document.student.sname.value=="") { alert("姓名不能为空!"); return; } }</script><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>添加学生信息</title></head><body><formaction="#"method="post"name="student"onSubmit="validateForm()"> <tablealign="center"> <tr><td>学号</td><td><inputtype="text"name="sno"/></td></tr> <tr><td>姓名</td><td><inputtype="text"name="sname"/></td></tr> <tr><td>性别</td> <td> <inputtype="radio"name="sex"value="male"/>男 <inputtype="radio"name="sex"value="female"/>女 </td></tr> <tr><td>专业</td> <td> <selectname="major"> <optgrouplabel=""> <optionvalue="公共管理">公共管理</option> <optionvalue="信息管理">信息管理</option> </optgroup> </select> </td> </tr> <tr><td>籍贯</td><td><inputtype="text"name="region"/></td></tr> <tr><td>简介</td> <td> <textareaname="introduction"cols="40"rows="10"></textarea> </td></tr> <tr> <tdcolspan="2"align="center"><inputtype="submit"value="保存"/> <inputtype="reset"value="重置"/> </td> </tr> </table></form></body></html>JSP语法基础JSP页面结构与语法一个JSP页面中,一般可以包含以下5种元素。HTML元素注释(1)XML&HTML注释:<!--注释-->JSP也支持HTML注释,需要注意的是HTML注释可以通过查看源代码方式看到。(2)JSP注释:<%--JSP注释%-->,通过查看源代码方式看不到。(3)JSP也支持Java注释。<%放置Java代码段//java注释/**/%>脚本元素声明语法格式:<%!声明代码%>注意:<,%,!之间不能有空格。作用:用来在JSP页面声明页面级的成员变量和方法JSP赋值语法格式:<%=表达式%>注意:表达式后面不能有分号JSP代码段语法格式:<%代码段%>注意:在<%%>中间声明的变量都是局部变量,作用域仅在指定的范围内有效。JSP指令page指令作用:指定JSP页面的一些属性,如采用的编程语言,字符编码,导入的JAVA类,缓存大小,MIME类型,是否支持EL表达式等。语法格式:<%@page属性名1=”属性值1”属性名2=”属性值2page指令需要放在JSP首页的第一行。属性的作用:language:指定JSP页面采用的编程语言,只能是javacontentType:指定该页面的MIME类型,默认为text/html;charset=ISO-8859-1pageEncoding:指定页面采用的字符编码import:指定JSP页面需要导入的类库,如果要导入多个,中间使用逗号隔开。如:import="java.util.*,java.io.*"buffer:可选的,设置JSP页面的缓存大小,默认为8k。errorPage:指定错误页面。isErrorPage:可选,设置本页面是否为错误页面,默认为false。autoFlush:可选,设置是否自动清除缓存,默认为true。isELIgnored:可选,设置是否忽略EL表达式,默认为falsesession:可选,设置是否支持会话,默认为true。include指令作用:在一个JSP页面中包含另外一个页面,静态文件包含。 语法格式:<%@includefile=“被包含的页面”%> 注意:被包含的页面和主页面采用的字符编码必须一致,否则运行时将会出现错误。NewFile.jsp<imgsrc=“image/Winter.jpg”/>taglib指令作用:在JSP页面引入指定的标签库,只有引入标签库之后,才能在该JSP页面中使用引入标签库的标签。语法格式:<%@taglibprefix=”标签前缀”uri=”标签库的路径”/>如:<%@taglibprefix="s"uri="/struts-tags"%><s:textfield/><inputtype=”text”>JSP动作(1)<jsp:include> 作用:动态文件包含。 语法格式:语法1:<jsp:includepage=”包含的文件路径”/>语法2:<jsp:includepage=”包含的文件路径”></jsp:include> 与<%@include>指令的区别: 包含的时间不一样。在编译时<%@include>把包含的文件包含在主文件中,而<jsp:include>动作是在程序运行时才将包含文件包含在主文件中。 <jsp:include>可以包含文件包括HTML,JSP,甚至是txt文件。包含的内容可以动态更新。(2)<jsp:param> 作用:声明参数名称及对应该参数的值。该动作标记不能单独使用,必须与其他动作标记结合使用。 语法格式:<jsp:paramname=”参数名”value=“参数值”/> 示例:<jsp:includepage="copyright.jsp"> <jsp:paramname="author"value="zhangsan"/></jsp:include>2015-9-11(3)<jsp:forward>作用:实现页面跳转,相当于HTML<a>标记语法格式:<jsp:forwardpage=”目标页面”|<%=表达式%>/><jsp:forwardpage=”目标页面”></jsp:forward>该动作标记将直接从源页面跳转到目标页面,用户并不能看到源页面的内容。但是跳转后,地址栏仍显示源页面的地址,不会更新至目标的URL。示例:<jsp:forwardpage="target.jsp"> <jsp:paramname="param"value="200"/></jsp:forward>(4)<jsp:useBean>作用:在JSP页面引用指定的JavaBean对象语法格式:格式一:<jsp:useBeanid=”Bean的代号”class=”JavaBean的包路径”scope=”page|request|session|application”/>格式二:<jsp:useBeanid=”Bean的代号”class=”JavaBean的包路径”scope=”page|request|session|application”></jsp:useBean>示例:<jsp:useBeanid="mybean"class="com.bean.MyBean"scope="request"/>(5)<jsp:setProperty>作用:为JavaBean的成员变量赋值语法格式:<jsp:setPropertyname=”useBean标记中id属性值”property=”JavaBean成员变量的名称”value=”成员变量的值”/>(6)<jsp:getProperty>作用:获取JavaBean成员变量的值语法格式:<jsp:getPropertyname=”useBean标记中id属性值”property=”JavaBean成员变量的名称”/>内置对象何谓内置对象对象:按照某种类(class)实例化后的实例称为对象。任务一种对象(变量)必须遵循先实例化后使用的原则。JSP提供的内置对象,不用我们实例化就可以直接使用的对象,称为内置对象。request:javax.servlet.http.HttpServletRequestresponse:javax.servlet.http.HttpServletResponsesession:javax.servlet.http.HttpSessionpageContext:javax.servlet.PageContextpage:等价于this,java.lang.Objectapplication:javax.servlet.ServletContextconfig:javax.servlet.ServletConfigexception:java.lang.Throwableout:javax.servlet.jsp.JspWriterjava.io.PrintWriterout=request.getWriter();out.print(“Hello”);Servlet:javax.servlet.ServletHttpServlet:javax.servlet.http.HttpServletjavax.servletrequestrequest代表HTTP协议的一个请求对象。request对象可以获取请求报文的长度,字符编码,主机名称,MIME类型,请求方式,请求参数等信息。getAttribute(Stringname)/setAttribute(Stringname,Objectvalue):获取与设置属性信息。removeAttribute(Stringname):删除属性信息。getCharacterEncoding()/setCharacterEncoding(Stringcode):获取设置字符编码getParameter(Stringname)/getParameterValues(Stringname):获取请求的参数getMethod():获取请求的方式getProtocol():获取请求的协议,HTTP协议getQueryString():获取查询字符串getRemoteAddr():获取客户端的IP地址getSession():创建Session对象//创建session对象的HttpSessionsession=request.getSession();String[]getParameterValues(Stringname)EnumerationgetParameterNames(Stringname)getServerPort():获取服务器端口getServletPath():获取程序的地址getCookies():返回Cookie信息,返回值类型Cookie[]表单form.jsp<inputtype=”hidden”name=”data”value=”123”request.getParameter(“data”)=123<formaction="result.jsp"method="get">用户:<inputtype="text"name="username"/><br/>密码:<inputtype="password"name="password"/><br/>用户类型:<inputtype="radio"value="admin"name="usertype">管理员</input><inputtype="radio"value="common"name="usertype">普通用户</input><br/>爱好:<inputtype="checkbox"value="Reading"name="hobby">读书</input><inputtype="checkbox"value="Sports"name="hobby">体育</input><inputtype="checkbox"value="Games"name="hobby">玩</input><br/><inputtype="submit"value="登录"/></form>结果result.jsp用户名:<%=request.getParameter("username")%><br/>密码:<%=request.getParameter("password")%><br/>用户类型:<%=request.getParameter("usertype")%>;爱好:<%String[]hobby=request.getParameterValues("hobby");for(Stringh:hobby)//foreach{ out.print(h); out.print("");}%>request对象的方法EnumerationgetAttributeNames();java.util.Enumeration与Iterator接口的功能类似,都是用来遍历一个容器的。该接口有两个方法:booleanhasMoreElements();EnextElement()Enumeratione=request.getAttributeNames();while(e.hasMoreElements()){ System.out.println(e.nextElement());}三、response response是HTTP响应报文,请求状态码:404,405,500要知道它们的含义。 一个HTTP响应报文包括,请求行,请求报头,请求体。 response对象提供了一些方法,可以获取请求行,请求报头的信息,也可以设置这些信息。addCookie(Cookiecookie):向客户端发送CookiegetBufferSize():获取缓冲区的大小getCharacterEncoding()/setCharacterEncoding():获取,设置响应报文的字符编码sendError(intstatus)/sendError(intstatus,Stringurl):设置状态码sendRedirect(Stringurl):重定向页面setContentLength(intlength):设置请求的长度setHeader(Stringheader,Stringvalue):设置请求报头。示例://隔5秒钟自动跳转至url指定的页面response.setHeader("Refresh","5;url=");//每隔5秒钟刷新一次页面response.setHeader("Refresh","5”http://localhost:8080/ch3/form.jsphttp://localhost:8080/ch3/count.jsp//页面的重定向response.sendRedirect(“url”);注意:重定向是指把当前用户请求重新定向至另外一个请求。重定向实质上是两个请求。与<jsp:forward>的区别:(1)sendRedirect()方法页面跳转之后,地址栏的地址会更新至重定向的页面地址。而<jsp:forward>则不会。(2)sendRedirect()方法可以跳转至本项目以外其他页面,而<jsp:forward>则不会。(3)<jsp:forward>的执行效率比sendRedirect()高。RequestDispatcher:请求转向//sendError发送错误sendError(404);sendError(404,”form.jsp”);四、cookie(1)什么Cookie?Cookie就是服务器发送客户端的一些用户个人信息,并且这些信息将以文本形式保存在客户机的某个目录下,当用户下次访问时,浏览器将会把Cookie的信息再次发送服务器。Cookie是一个键值对key/valuename:zhangsangpassword:123(2)使用Cookie步骤第一步:创建Cookie对象。构造方法:Cookie(Stringkey,Objectvalue)Cookiecookie=newCookie(“name”,”zhangsan”);第二步:使用response对象添加Cookieresponse.addCookie(cookie);第三步:设置Cookie的一些信息(可选的),如Cookie有效期,Cookie的保存路径等。//设置Cookie的有效期3600s,以秒为单位cookie.setMaxAge(3600);cookie.setPath(“/”);第四步:服务器端读取CookieCookie[]c=request.getCookies();for(Cookietemp:c){ Strings=temp.getName();//用来获取键名key Stringp=(String)temp.getValue();//用来获取键值value}2015-9-17五、session 代表一个HTTP会话,所谓会话由HTTPrequest与response组成。使用Session时,要注意区分与request的作用域。Session可以跨越不同的页面传值,而request只能在当前请求中传值。 我们在应用程序中使用session来跟踪用户的信息。getAttribute(Stringname)/setAttribute(Stringname,Objectvalue):获取、设置会话属性removeAttribute(Stringname):删除指定会话属性invalidate():取消所有的会话属性setMaxInactiveInterval(inttime)/getMaxInactiveInterval():设置、获取会话的最大时间间隔。在登录页面session.setAttribute(“name”,”zhangsan”);session.setAttribute(“test”,123);Strings=(String)session.getAttribute(“test”);session的作用范围要比request的作用范围大。此外,即使request与Session的属性名称一样,但它们仍是不同的属性对象。//让所有的Session失效。session.invalidate();//设置Session的最大有效期为30分钟session.setMaxInactiveInterval(30)//以分钟为单位六、page 相当于this关键字,即Object类,具有Object类的所有方法,如toString(),getClass(),clone(),equal()等方法。七、out 向JSP页面中输出指定的数据。 System.out.println()是向控制台(Console)输出指定的数据print()println()newline()out.print("<scripttype='text/javascript'>alert('hello')</script>");2012-9-17八、pageContext pageContext对象代表一个文件的上下文(Context),代表当前页面的一些属性信息。使用pageContext对象可以获取当前页面的一些其他内置对象,如request,response,application、exception等。 getSession():获取当前页面的Session对象; getOut():返回out对象; getResponse():返回response对象; getRequest():返回Request对象;getServletConfig():返回config对象;getServletContext():返回application对象;getAttribute():返回Attribute对象;forward():相当于response.redirect()方法。九、exception 该对象代表当前JSP页面运行时出现异常时的异常对象,相当于java.lang.Throwable类。我们使用exception对象可以获取当前JSP页面的异常。 e.printStackTrace()十、application 该对象代表应用程序本身。 setAttribute()/getAttribute():用法与request、session的这两个方法用法相同。区别在于application设置的属性信息作用域范围最大。作用域从大到小的次序为:application,session,request。 在一个应用系统中,session或者request中同名的属性,如果是多用户使用时,每个用户的属性值是相互独立的,它们值互不干涉。而在application中,每个用户共享使用同名的属性。类似static类型成员变量。publicstaticinta=100; 一般来说,使用Application对象作为应用程序全局类型的变量时使用该对象。getServerInfo():获取当前Server的信息getMajorVersion():获取当前Servlet的主版本号getMinorVersion():次版本号getContext():获取上下文信息getRealPath():获取程序的路径。getParameter():获取参数值application.getContext("/ch3").getRealPath("/"):获取当前程序的真实路径。十一、web.xml文件介绍(1)<error>元素作用:定义应用程序统一的错误处理页面语法:<error> <error-code>response的状态码</error-code> <exception-type>异常类名称</exception-type> <location>/错误页面的URL</location><error>注意:在同一个<error>元素中,<error-code>与<exception-type>元素只能定义其中的一个。<location>元素定义错误页面的路径,必须以“/”开头(2)<welcome-file-list>元素作用:定义应用程序的首页语法格式:<welcome-file-list> <welcome-file>页面</welcome-file></welcome-file-list>(3)<servlet>元素作用:用来配置程序中对应的Servlet程序及其信息语法格式:<servlet><description>描述该Servlet的信息</description><servlet-name>servlet的名称</servlet-name><servlet-class>servlet具体的包路径</servlet-class><load-on-startup>定义Servlet的加载次序</load-on-startup></servlet>(3)<servlet-mapping>元素作用:用来Servlet的映射信息,必须与<servlet>元素成对出现,并且要放在<servlet>元素的后面。语法格式:<servlet-mapping> <servlet-name>与<servlet>元素中的同名Servlet值一致</servlet-name><url-pattern>定义该Servlet的url路径</url-pattern></servlet-mapping>(4)<filter>元素作用:定义过滤器语法格式:<filter> <filter-name>MyFilter</filter-name> <filter-class>com.filter.MyFilter</filter-class></filter><filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>“/*”为通配符,意思为当访问项目的任何一个页面时,都会启动本过滤器。(5)<listener>元素作用:定义监听器语法格式:<listener> <listener-class>监听器的包路径</listener-class></listener>(6)<session-config>元素session.setMaxInactiveInterval()可以设置session的最大有效期。作用:设置程序中的Session的有效期语法格式:<session-config><session-timeout>20</session-timeout>//以分钟为单位</session-config>十二、config 该对象代表JavaWeb应用程序的配置信息,使用该对象一般用来获取web.xml文件中的一些信息。getInitParameter():获取web.xml文件中配置的参数值getInitParameterNames():返回web.xml文件中的参数名,注意返回是一个Enumeration对象。getServletContext():获取Servlet的上下文信息getServletNames():返回当前的Servlet名称2015-9-25第四章JDBC1、MySQL2、JDBCAPI介绍importjava.sql.*;importjava.text.*;publicclassJDBCTest{ staticConnectionconn=null; staticStatements=null; publicstaticvoidmain(String[]args){ java.util.Datedate=newjava.util.Date(); SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); Stringsdate=sdf.format(date); Stringsql="INSERTINTOuser(sno,sname,sex,birthdate)VALUES('20100202','lisi','女','"+sdate+"')"; System.out.println(sql); try { Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/db","root","mysql"); s=conn.createStatement(); s.executeUpdate(sql); s.close(); conn.close(); }catch(Exceptione) { e.printStackTrace(); } }}一、Java程序连接数据库的两种方式:Java程序->JDBC–ODBCBridge->数据库Java程序->JDBCPureDriver->数据库Java应用程序在操作数据库之前,首先要确保有相关数据库的JDBC驱动。MySQL的地址表示方法:jdbc:mysql://localhost:3306/dbMySQL的使用的端口号:3306MySQL加载驱动的名称:com.mysql.jdbc.DriverSQLServer的地址表示方法:jdbc:sqlserver://localhost:1433;DatabaseName=dbSQLServer的端口号:1433SQLServer加载驱动的名称:com.microsoft.jdbc.sqlserver.SQLServerDriver类方法:方法有static修饰,调用方式:类名.方法名实例方法:没有static修饰,调用方式:实例名.方法名Sqlserver:Selecttop10fromyourtableMysql:select*fromyourtablelimit10JDBCAPIDriverManager类staticConnectiongetConnection(Stringurl)staticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)创建一个数据库连接对象。DriverManager.getConnection(“jdbc:mysql://localhost:3306/db”,“root”,“123”地址表示方法:jdbc:数据库名称://数据库的IP地址:端口号/数据库名DriverManager.getConnection(“jdbc:mysql://localhost:3316/db?user=root&password=123Connection接口close():关闭数据库连接对象commit():提交事务,一般事务自动提交,故无需调用此方法createStatement():创建一个Statement对象prepareStatement():创建一个PreparedStatement对象preparecall():创建一个CallableStatement对象setAutoCommit(true/false):设置是否自动提交事务,默认为true3、Statement接口:用来执行普通的SQL语句executeUpdate():用来执行INSERT/UPDATE/DELETE等SQL语句,返回int类型executeQuery():用来执行SELECTSQL语句,返回ResultSet类型close():关闭Statement对象execute():用来执行任何SQL语句,返回boolean4、PreparedStatement,用来执行含有参数的SQL语句,是Statement的子接口 setXxx(inti,Objectx)方法:为SQL语句中第i个参数赋值。 CallableStatement,用来执行存储过程,是PreparedStatement的子接口。ResultSet:用来存储SQL查询的结果集next():判断当前结果集是否还有下一条记录getXxx():获取指定列的字段值。2015-10-8一、软件开发的步骤(1)需求分析:确定系统的边界,做什么用的,涉及到哪些对象(实体),需要哪些人员参与,各个对象之间的关系,业务流程,参与的人员具体的业务是什么的。需求分析说明书(2)技术上可行性分析:设计系统体系结构,数据库的物理设计(表结构设计),采用什么样的技术组合。(3)设计系统原型,具体设计页面风格,公共类,关键算法设计(4)编码(5)测试,单元测试,白盒测试,黑盒测试,压力测试,性能测试。(6)编写文档,例如用户使用说明书对于数据库的操作步骤:第一步:加载JDBC驱动Class.forName(“驱动类名称”);第二步:创建数据库连接对象Connection,主要使用DriverManager类的getConnection()方法创建。Connectioncon=DriverManager.getConnection(url,user,password);第三步:创建一个操作SQL的对象Statement/PreparedStatement/CallableStatement(1)Statementst=con.createStatement();//普通SQL(2)PreparedStatementps=con.prepareStatement(sql);//动态SQL(3)CallableStatementcs=con.prepareCall(sql);//存储过程第四步:执行SQL语句(1)st.executeUpdate(sql);//执行UPDATE/DELETE/INSERT语句st.executeQuery(sql);//执行SELECT语句ps.setXxx(index,Value);//用来为参数赋值ps.executeUpdate();或者ps.executeQuery();cs.setXxx(index,value);cs.executeUpdate();cs.executeQuery()若是执行的SELECT语句,在执行第五步之前,还要进行数据的分析与获取。Stringsql=select*fromperson;ResultSetrs=st.executeQuery(sql);while(rs.next()){ Stringname=rs.getString(“name”); ……}第五步:关闭对象st.close();con.close();2015-10-9第5章JavaBean1、认识JavaBean2、编写一个JavaBean3、JavaBean的应用一、认识JavaBean JavaBean是一个可复用的组件模型,最初发明时目的是应用于JavaSwing(可视化组件)的开发,相当于微软的一个组件技术Com技术。 但是,随着JSP技术发展,JavaBean逐渐应用于JavaWeb开发中(非可视化)。(1)JavaBean的优势: JavaBean能够实现业务逻辑(JAVA代码)与表现层(HTML)分离,提高程序的可读性和复用性。 JavaBean便于开发与设计人员的分工。 JavaBean实质上就是一个Java类,具有Java语言所有特性,例如跨平台,开源等。(2)JavaBean规范JavaBean必须是一个public类型的类;JavaBean的成员变量必须是private类型的(把成员变量隐藏起来,对于其他类来讲,它的成员变量是不可见的);JavaBean为成员变量提供一对setter/getter方法,通过使用setter方法为成员变量赋值,通过getter方法访问成员变量的值。如果成员变量是boolean类的类型,只需为该成变量定义一个isXxx()方法即可,不必再定义getter。setter/getter方法的格式为:setXxx()/getXxx(),例如一个JavaBean中有一个成员变量为privateStringname,那么name对应的setter和getter方法为:privateStringname;publicvoidsetName(Stringvalue){ =value;}publicStringgetName(){ return;}JavaBean也可以构造方法,但是至少提供一个无参的缺省构造方法。编写JavaBean应用JavaBean<jsp:useBean>:在JSP页面中声明JavaBean,声明之后方可在JSP页面中调用JAVABEAN对象。<jsp:setProperty>:为JavaBean对应的成员变量赋值,相当于调用JavaBean对应的setXxx()。等价于<%bean.setXxx();%><jsp:getProperty>:获取JavaBean对应的成员变量值,相当于调用JavaBean相应的getXxx()。等价于<%=bean.getXxx()%>JavaBean可以与表单中的输入域关联起来,主要依赖JavaBean的成员变量名称与输入域<inputname=”xxx”/>的name属性值一致。 可以使用<jsp:setProppertyproperty=”*”name=”bean”/>将自动与表单中的对应输入域进行匹配。以下两行声明是错误的:<jsp:useBeanid=”test”class=”bean.Test”scope=”session”/><jsp:useBeanid=”test”class=”bean.Bean”scope=”session”/>JavaBean的useBean标记的作用域scope属性,有四个取值,page/request/session/application,作用域依次增大。注意:在同一个范围内,不能使用两个JavaBean对象具有相同的id属性。page代表声明的JavaBean对象只在当前页面有效,是默认的作用域。request代表声明的JavaBean对象在同一个请求内有效。session代表声明的JavaBean对象在同一个会话中有效。application代表声明的JavaBean对象在整个应用程序中都有效。JavaBean的应用场合:JavaBean主要以模型的形式存在,是应用程序的数据模型,使用JavaBean获取JSP页面中表单中用户输入的数据,JavaBean作为数据的中转站(数据的暂存器),将从表单中获取的数据传送给我们的业务逻辑(Servlet)。JavaBean的设计原则: JavaBean中有哪些成员变量取决于我们的数据模型(表结构),数据表中有哪些字段,就应该在JavaBean中定义相应数据类型的成员变量。第六章Servlet,Filter和Listener1、Servlet的概念(什么是Servlet、工作原理、功能作用、生命周期等)2、如何编写Servlet(一种特殊的Java类)3、掌握Servlet常用API4、应用Servlet(调用、配置等)Servlet是运行在服务器端的Java程序,它的运行必须依赖于一种Web容器(如tomcat)。Servlet可以分为两种,一种普通Servlet,另外一种是HttpServlet,它支持HTTP协议。因此我们编写Servlet类必须继承于上述两种之一。有关Servlet的API全部在以下两个包中:javax.servlet.*javax.servlet.http.*javax.servlet.http.HttpServlet在Servlet程序中,可以直接或者间接地使用JSP的内置对象。Servlet程序可以生成一个网页。javax.servlet.http.HttpServletRequest,requestpublicvoidservice(javax.servlet.http.HttpServletRequestrequest,javax.servlet.http.HttpServletResponseresponse)throwsIOException{ HttpSessionsession=request.getSession(); PrintWriterout=response.getWriter();}Applet是运行在浏览器上的Java小程序。Java程序包括两种:JavaApplication和JavaApplet。1、Servlet的生命周期Servlet的创建到销毁要经历三个阶段:初始化、执行、销毁初始化:一旦一个Servlet程序初装入Web服务器(Web容器)之后,Servlet调用自身的init()方法,初始化相关信息(相当于普通Java类的构造方法,分配空间,初始化参数)。在Servlet的整个生命周期中,初始化init()方法仅且执行一次。执行:当有来自Web客户端的请求时,Servlet调用service()方法处理请求,把请求的结果以对应的doXxx()方法响应给客户端。如果客户端请求方式为Get方式时,Servlet将以doGet()方法响应;如果客户端请求方式为Post方式时,Servlet将以doPost()方法响应。service()可以执行任意多次。销毁:Servlet仅在Web服务器关闭时,它才会销毁。当要销毁时,调用destroy()方法来执行销毁。在Servlet的生命周期中,仅且执行一次。web.xml<servlet><description>Servlet配置</description<servlet-name>MyServlet</servlet-name><servlet-class>com.servlet.MyServlet</servlet-class><init-param> <param-name>p</param-name> <param-value>100</param-value></init-param></servlet><servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern></servlet-mapping>http://localhost:8080/jdbc/service/MyServletServlet的配置支持两种方式:xml方式,注解方式(Servlet3.0)2、ServletAPIjavax.servlet.Servlet接口,是所有Servlet程序的基础。它提供了以下5个方法:init(ServletConfigconfig):初始化,可以使用config参数获取Servlet的一些初始化参数(通过使用config.getInitParameter(“p”))。另外,自定义的Servlet如果说在初始化要完成一些特定的初始化工作,也应该这些代码放在init()方法执行。service(ServletRequestrequest,ServletResponseresponse):一般来说用来接收用户的请求。我们一般不会重写该方法,我们重写doGet/doPost方法。desotry():用来执行销毁,一般不用我们重写。getServletInfo():用来获取Servlet的一些自身信息,如版本号,开发人员等。getServletConfig():返回一个Config对象,用来获取Servlet启动和初始化的一些信息。doGet():用来处理客户端GET方式的请求;doPost():用来处理客户端POST方式的请求。如何调用Servlet使用表单调用<formaction=”Servlet的路径”method=”get”>URL调用如:<ahref=”Servlet的路径”>Servlet</a>http://localhost:8080/javabean/service/TriangleServlethttp://localhost:8080/javabean/triangle.jsp<formaction=”service/TriangleServlet”method=”post”>配置Servlettomcat7支持两种方式配置Servlet,一种方式(新技术)是使用注解方式配置,也是默认的方式;另外一种方式是在web.xml文件中配置Servlet,在Tomcat6及以前的版本支持该方式。(1)注解方式语法格式:@WebServlet(….)位置:把注解放在类的声明的前面。使用@WebServlet将一个继承于javax.servlet.http.HttpServlet的类定义为Servlet组件。@WebServlet有很多的属性:asyncSupported:声明Servlet是否支持异步操作模式。description:

Servlet的描述。displayName:

Servlet的显示名称。initParams:

Servlet的init参数。name:

Servlet的名称。urlPatterns:

Servlet的访问URL,注意URL必须以“/”打头。value:

Servlet的访问URL。Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。像上面的TriangleServlet可以描述成@WebServlet(name="TriangleServlet",value="/TriangleServlet")。也定义多个URL访问:@WebServlet(name="TriangleServlet",urlPatterns={"/TriangleServlet","/TriangleServlet2"})或者:@WebServlet(name="TriangleServlet",value={"/TriangleServlet","/TriangleServlet2"})(2)使用web.xml配置Servlet<servlet> <description>三角形</description> <servlet-name>TrinagleServlet</servlet-name> <servlet-class>com.servlet.TriangleServlet</servlet-class></servlet><servlet-mapping> <servlet-name>TrinagleServlet</servlet-name> <url-pattern>/service/TriangleServlet</url-pattern></servlet-mapping>Servlet的作用可以生成HTML页面或者HTML页面片段;可以利用Servlet实现业务流程控制;可以获取表单中的数据,也可以获取查询字符串;可以使用Java的其他API,例如JDBC;可以访问其他资源,如数据库服务器,Java应用程序。在MVC模式中,我们使用Servlet完成C层(Controller,控制层)的功能。SUN公司曾经提出两种JAVA架构模型:JSPMODEL1,JSPMODEL2Model1:JSP(View)+JavaBean(Model,Controller)Model2:JSP(View)+JavaBean(Model)+Servlet(Controller)在Servlet中如何创建和使用内置对象out: PrintWriterout=response.getWriter();session: HttSessionsession=request.getSession();request/response: 在doGet()/doPost()方法中可以直接使用config: config内置对象的具体类型:javax.servlet.ServletConfig类型在init(ServletConfigconfig)方法中可以直接使用。application: HttpSessionsession=request.getSession(); ServletContextapplication=session.getServletContext(); 如果,在servlet类中重写了父类的service()方法,Servlet程序在执行时,将执行service()方法,不再去调用doXxx()方法。所以说,一般情况下我们不重写service()方法,而是重写doXxx()方法。2015-10-15过滤器与监听器了解过滤器的工作原理创建与配置一个过滤器类过滤器常见API过滤器的工作原理Filter是Servlet2.3之后新增一个技术,Filter将会用户的请求进行过滤,满足指定条件的请求才能访问Web资源;如果不满足条件,那么该请求将被过滤,Web服务器是不会请求的内容响应给客户端。在客户端与Web服务器中间增加了一个环节,通过该环节对用户的请求和响应进行分析过滤。过滤器的主要作用:(1)在servlet被调用之前截获;

(2)在servlet被调用之前检查servlet

request;

(3)根据需要修改request头和request数据;

(4)根据需要修改response头和response数据;

(5)在servlet被调用之后截获。

过滤器的主要应用:如用户权限控制、修改用户的请求格式等。二、创建与配置Filter(1)创建(略),参见教材;(2)配置Filter,两种方式。方式一:使用注解方式(仅tomcat7支持) 语法格式:@WebFilter(属性名=属性值,…)主要有3个属性filterName:可选,用来定义filter的名称;urlPatterns:必选,用来定义filter被调用的路径,也是必须以“/”打头。如/*,代表当该访问Web应用的任何资源时,该Filter都会被调用,并且执行该过滤器的doFilter()。initParams:可选,用来定义过滤器的初始化参数。如:initParams={ @WebInitParam(name="param",value="100") } 如果说两个可选属性都省略时,注解可以简化为@WebFilter(“url”) 注意:注解必须放在过滤器类的定义的上面,紧跟在类定义之前。方式二:使用web.xml方式(tomcat7/tomcat6及早期版本)<filter> <filter-name>SecondFilter</filter-name> <filter-class>com.filter.SecondFilter</filter-class> <init-param> <param-name>param</param-name> <param-value>100</param-value> </init-param></filter><filter-mapping> <filter-name>SecondFilter</filter-name> <url-pattern>/*<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论