企业培训_java培训总结_第1页
企业培训_java培训总结_第2页
企业培训_java培训总结_第3页
企业培训_java培训总结_第4页
企业培训_java培训总结_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

时间段:2012.812舒孝义2012年12月14日培 训 课 程 总 集 目录一、javaWeb应用开发- 3 -二、IDE(Eclipse)工具集成tomcat- 5 -三、Servlet- 9 -1、Servlet 生命周期- 9 -2、Servlet初始化- 9 -3、Servlet的值传递- 10 -四、JSP简介- 11 -五、JSTL标签应用- 18 -六、练习- 21 -七、建模工具rose- 22 -1、用例视图- 22 -2、逻辑视图- 22 -八、招聘管理- 25 -九、数据源与连接池- 28 -十、人员管理模块- 32 -十一、软件需求规约- 35 -十三、JavaWeb文件上传- 41 -十四、Hibernate入门- 44 -十五、Spring入门- 53 -十六、Ajax- 58 -十七、B2C电子商场- 59 -1、设计所需文档- 59 -2、软件架构- 59 -3、B2C网上商城系统架构- 60 -一、javaWeb应用开发开发javaWeb应用的步骤1、 获取web服务器:我们使用的是免费的、开源的tomcat5.52、 安装tomcat服务器-解压tomcat压缩包到合适(非中文目录,目录中最好不要有空格)的目录-配置环境变量JAVA_HOME(该环境变量名不区分大小写),因为tomcat是java语言编写的;其次javaWeb程序里也有javaSe内容,所以tomcat要想正确解析Servlet,必然依赖jre环境;JAVA_HOME的值就是jre的根目录-如果不配置JAVA_HOME环境变量则tomcat无法正常启动3、 测试tomcat是否正确安装、配置找到tomcat根目录下的bin目录中的startup.bat文件(windows系统);双击运行,出现如下窗口之后打开浏览器,输入http:/localhost:8080 回车运行,弹出如下窗口 表示tomcat正确安装。4、 准备开发环境源文件的编写工具,html文件的编写工具;servlet-api.jar文件配置classpath环境变量5、 在tomcat根目录下的webapps目录定义自己的web站点,比如“mywebroot”6、 明确javaWeb应用的站点的目录结构-mywebroot-*.html文件|*.jsp|*.gif|*.png|*.jpg 都是可选操作-目录/*.html|*.jsp|*.gif|*.png|*.jpg 都是可选操作-WEN-INF 可选目录,如果是动态的javaWeb应用,必须有-classes 该目录也是可选的,如果有自定义的类,类要存放在当前目录下-lib 该目录也是可选的,如果有依赖的第三方类库(jar包),必须存放在该目录-web.xml 该文件也是可选的,如果要为自定义的Servlet注册,则该文件必须7、定义的Servlet要想使用默认的URL(协议:/主机名:端口号/servlet/Servlet的完整类名)进行访问,要起用默认的Servlet,起用方式是:找到tomcat根目录下的conf目录中的web.xml文件,取消注释即可!- invoker org.apache.catalina.servlets.InvokerServlet debug 0 2 -!- invoker /servlet/* -二、IDE(Eclipse)工具集成tomcat一、 纯手工开发javaWeb应用很麻烦,我们为了提高开发效率所以需要借助IDE工具,当我们使用IDE开发web应用时,需要web服务器,而一般IDE工具是没有集成tomcat的二、 将Eclipse和tomcat进行绑定(集成)1、 安装Eclipse2、 安装tomcat3、 打开支持javaEE应用开发的Eclipse4、5、6、7、8、9、10、11、12、三、Servlet1、Servlet 生命周期一、 明确:servelt实例是由Servler管理的(管理内容是:实例化和从server中移除,移除后成为垃圾对象,垃圾对象必然会GC回收,回收即销毁)二、 默认情况下:Servlet在第一次被请求时才会初始化,即server构建Servlet实例三、 一个Servlet实例从无到有再到无的过程:1、 请求该Servlet时,构建实例,构建实例调用init(ServletConfig)方法;在调用初始化方法前要先构建ServletConfig实例(该实例也是server构建的);2、 处理用户请求:server调用service(ServletRequest,ServletResponse)方法处理用户请求;该方法调用前也要先由server构建ServletRequest和ServletResponse实例;3、 如果server将Servlet从server中移除,则会调用destroy方法。那么Servlet变成垃圾对象,等待GC回收(销毁)。四、如果Servlet是HttpServlet,它的处理请求的过程有所变化;即server调用service(ServletRequest,ServletResponse)方法,该方法调用前也要先由server构建ServletRequest和ServletResponse实例;service(ServletRequest,ServletResponse)方法调用HttpServlet实例的service(HttpServletRequest,HttpServletResponse)方法,该方法调用前先构建HttpServletRequest和HttpServletResponse实例;然后根据请求方式,service(HttpServletRequest,HttpServletResponse)调用对应的doXxx方法(如过是GET请求调用doGet方法、如果是POST请求,调用doPost方法);初始化和销毁方式不变。2、Servlet初始化一、 根据不同的web server,Servlet有时是在第一次请求时构建对象;有些server是一启动时就会构建Servlet的实例;二、 虽然不同web server对于Servlet的初始化会有所不同,但我们可以手动控制Servlet的初始化时间;在对Servlet进行注册师,通过指定初始化时间,该节点接收的是整型的值,0表示在server启动时就初始化Servlet实例;-1值表示最晚初始化(第一次访问该Servlet时才初始化);正整数范围内,数值越大,初始化越晚(最晚晚到第一次访问时初始化);如果多个Servlet的的值是一样的,则随机初始化(即多个Servlet之间没有初始化的先后顺序)。三、 Servlet第一次初始化时,会调用init(ServletConfig)方法。默认情况,一个Servlet在一个web应用中只有一个实例。意味着我们在编写程序的时候,可以将只执行一次的代码放到init方法中执行。四、 获取初始化信息的方式分为两种:分别是编码式、位置方式;1、 硬编码方式:初始化所依赖的信息直接写在代码中;这样做不好,不利于程序的修改;我们应该采用配置的方式;2、 配置方式:在web.xml中对Servlet进行注册时,在节点后通过节点定义一组初始化信息;这组信息通过和节点进行绑定;一个servlet节点可以有多组节点;在servlet中可以通过ServletConfig对象的getInitParameter方法获取初始化信息。注意:如果你定义的servlet是为其它servlet服务的,那么该servlet一定要在服务对象之前得到实例化。可以通过节点保障。3、Servlet的值传递1、 客户端向服务器端进行值传递客户端通过表单方式提交数据,服务器端通过HttpServletRequest对象的getParameter方法和getParameterValues方法获取客户端提交的值。表单提交值请求的两种常用方式,一种是GET请求传递,一种是POST请求传递,二者的区别是GET进行值传递时,值会在地址栏中进行显示(url?key=value&key2=value2)。2、 服务器端向服务器端传递值1) 使用HttpServletRequest对象进行服务器端值传递。该对象可以将Object类型的值通过setAttribute方法进行保存。在同请求链中,使用同一个HttpServletRequest对象的getAttribute方法获取传递的值(request.setAttribute(Objetkey, Objetvalue)=request.getAttribute(Objectkey)。在不同的Servlet中要想获取request对象保存的值,Servlet直接的跳转必须通过RequestDispatcher对象的forward方法进行Servlet跳转。因为该方式不会产生新的HttpServletRequest对象。2) 使用HttpSession对象进行服务器端值传递。该对象可以通过request对象的getSession方法获取会话对象(HttpSession对象就是会话对象,可以理解为同一浏览器窗口,包括该窗口创建的子会话窗口)。保存值的方式依然是使用setAttribute方法;获取值依然使用getAttribute方法。在session中保存的值,Servlet是重定向还是请求分发,都可以在另一个Servlet中获取上层Servlet中保存的值。3) 使用ServletContext对象进行服务器端值传递。也是通过setAttribute方法保存值,通过getAttribute方法获取值。而ServletContext对象可以理解为当前整个webApplication。即在ServletContext中保存的值,在任意服务器端的Servlet和jsp中都可以随时获取在其中保存的值。该对象保存的值是和整个应用的生命周期一致的。四、JSP简介1、 jsp实际就是servlet。当我们访问一个jsp文件时,webServer首先将jsp文件翻译成对应的java文件,然后将翻译得到的java文件进行编译,生成对应的class文件。该类提供了接收Http请求及响应Http请求的service方法(_jspService(HttpServletRequest request, HttpServletResponse response)。2、 一个标准的jsp文件由html标记和page指令组成。一般page指令又有很多属性;其中有一个pageEncoding属性,该属性是定义当前文件的编码方式的。3、 在servlet中:可以有java代码和字符串类型的html标记。这些字符串类型的html标记被响应对象HttpServletResponse对象发送到客户端浏览器中后,浏览器会对这些字符串类型的html标记进行解析。但是这样的操作很麻烦。Jsp就是解决servlet嵌套html标记这种痛苦的操作方式的。即在jsp中我们可以像编写普通html标记一样来编写jsp文件,同时在该文件中我们依然可以编写java代码。4、 在jsp中可以编写java代码。一个jsp文件中有两处地方可以编写java代码。分别是局部作用域(_jspService方法中)代码编写区域“”;另一处编写java代码的区域是“”。5、 Jsp中的java表达式:;我们可以通过这样的方式访问变量。如果通过java表达式调用方法,方法必须要有返回值。无论方法返回什么具体类型的值,表达式通通以字符串的方式打印。Java表达式支持运算(如数学运算、逻辑运算)。6、 Jsp文件例子:jsp001.jspInsert title hereString st = ssss;中文: 该jsp文件第一次被访问时,所翻译成的java文件(jsp001_jsp.java文件)package org.apache.jsp;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.jsp.*;public final class jsp001_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent String str = 这是成员变量;/在这里也可以编写java代码。这里编写的代码位于类体中。public void m1()System.out.println(is method.);public String m2()System.out.println(m2 method .);return m2 method return;public boolean m3()return true; private static java.util.List _jspx_dependants; public Object getDependants() return _jspx_dependants; public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException JspFactory _jspxFactory = null; PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; JspWriter _jspx_out = null; PageContext _jspx_page_context = null; try _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType(text/html; charset=gbk); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write(rn); out.write(rn); out.write(rn); out.write(rn); out.write(rn); out.write(Insert title herern); out.write(rn);/在这里可以编写java代码。这里编写的java代码都位于_jspService方法体中。String str = java 代码。这是局部变量。;m1(); out.write(rn); out.write(rn); out.write(rn); out.write(rn); out.write(String st = ssss;rn); out.write(t中文:); out.print(str ); out.write( rn); out.write(trn); out.write(t); out.print(m2() ); out.write(rn); out.write(trn); out.write(t); out.print(m3() ); out.write(rn); out.write(rn); out.write(); catch (Throwable t) if (!(t instanceof SkipPageException) out = _jspx_out; if (out != null & out.getBufferSize() != 0) out.clearBuffer(); if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); finally if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context); 7、 EL表达式:$;这就是EL表达式。EL表达式也支持运算(数学运算和逻辑运算)。EL表达式在html文件中无效;仅以文本方式显示。在jsp文件中我们可以通过page指令的isELIgnored属性控制EL表达式的启用/禁用。“”;默认值是false。表示启用EL表达式。8、 在jsp文件中如果用到其他类时,可以使用page指令的import属性导入需要的类。比如我们在jsp中使用到java.io.PrintWriter类时,可以通过“”导入。如果需要导入多个不同包中的类时,类之间可以使用英文输入法下的逗号分隔(如:)。9、 Jsp中的九大隐式对象:application、session、request、response、pageContext、page、out、config、exception。10、 EL表达式与四大值传递作用域:pageScope、requestScope、sessionScope、applicationScope;这四个作用域分别对应jsp中的四个隐式对象:pageContext、request、session、application。在这四个隐式对象中通过setAttribute(key, value)方法保存的值,可以使用EL表达式的四个作用域对象和引导符及key访问在其中保存的value值。例子:使用java表达式获取各个作用域中保存的值pageContext value: request value:session value:application value:使用EL表达式获取各个作用域中保存的值pageContext value: $pageScope.pagescope request value:$requestScope.requestscope session value:$sessionScope.sessionscope application value:$applicationScope.applicationscope 11、 在使用EL表达式时需要注意一下几点:a) EL表达式会忽略null值;b) EL表达式不能访问java代码中声明的变量;访问java变量使用java表达式;c) 在使用EL表达式访问作用域的key时,如果没有明确指出该key所对应的作用域,则EL表达式首先去pageScope中找,如果没有再去requestScope中找,如果依然没有找到,再去sessionScope中找,一直找到applicationScope作用域,如果依然没有找到,则返回空值,非null值。在那个作用域找到,则停止向下查询,直接返回值。requestScope.str:$requestScope.str str:$str 12、 如果有些资源(一般是jsp资源)不允许客户端直接访问,必须要先通过服务器端进行处理后才能访问,则将资源定义在WEB-INF目录下(或其子目录中)。位于WEB-INF目录下的资源只能在服务器端访问。13、 如何避免404问题(无效资源)。如果用户访问的是站点,而没有指定要访问的具体资源。我们可以通过在web.xml文件中定义欢迎页(首页)的方式避免404问题。但是这种方式不能解决访问无效资源问题。14、 如果用户输入无效资源,则会出现404问题。这时系统会使用404页面进行响应。但是这个页面对于普通终端用户来说,可读性很差。不利于网站的推广和使用。即网站操作不友好。这种不友好的默认404页面我们一般不采用,这种页面仅仅在开发阶段使用。而在实际运营阶段则采用定制的404页面替代。15、 如何定制错误页面。定制错误页面分为两种:一种通过错误代码定制,一种通过异常定制。a) 首先在编写对应的错误页面(jsp文件,一般该错误页面应放在客户端无法直接访问的地方,即WEB-INF目录下);b) 在定制的错误页面中通过page指令的isErrorPage属性指明当前页面是错误页面,“”;c) 在web.xml文件中通过error-page节点指定错误页面。404/WEB-INF/404.jspjava.lang.Exception/WEB-INF/exception.jsp16、 位于服务器端的WEB-INF目录下的资源只有服务器端可以访问。如果客户端也想访问,则可以在web.xml文件中通过servlet和servlet-mapping为资源(jsp文件)进行注册和虚拟目录映射。jsp404/WEB-INF/404.jspjsp404/404jsp17、 我们可以使用servlet-name和jsp-file节点对jsp文件进行注册。注册后的jsp文件也可以指定虚拟目录。18、五、JSTL标签应用1、 去JSTL官网获取jstl的核心类库:jstl-api-1.2.jar和jstl-impl-1.2.jar,并将它们导入到web工程中(WEB-INF/lib目录);2、 在你需要使用jstl标签的页面中通过taglib指令引入标签:;prefix使用标签时的前缀,可以随意定义,只要不和其它标记冲突即可;uri属性的值是要引入标签的地址值。该值可以在jstl-impl-1.2.jar的/META-INF/c-1_0-rt.tld中找到。3、 输出标签:4、条件判断标签满足条件时所要运行的代码。1 5、多条件判断标签1 大于c:when test=$2小于等于6、循环迭代标签:7、迭代标签的应用实例:%String strs = s1,s2,s3;pageContext.setAttribute(strs,strs);Person pers = new Person(张三,23),new Person(李四,24);pageContext.setAttribute(pers,pers);List slist = new ArrayList();slist.add(slist1);slist.add(slist2);slist.add(slist3);pageContext.setAttribute(list,slist);Map map = new HashMap();map.put(m1,map string);map.put(m2, new Person(王五,55);pageContext.setAttribute(map, map);%对常量集合进行遍历对java中的数组:比如字符串数组进行遍历对自定义类型的数组进行遍历:Person类型,有属性name和age对java中的List集合进行遍历:集合中全是String类型的值变量Map集合:key是String类型的,value是Object类型的,8、日期格式化输出标签: 9、将字符串解析为日期类型的数据标记:$dt 10、测指定字符串是否在母串中存在:$fn:contains(name,Zh) $fn:containsIgnoreCase(name, ZH)11、判断字符串长度或集合中元素的个数:$fn:length(name) 12、判断字符串是否以指定字符串开始或结束:$fn:startsWith(name,z) 或$fn:endsWith(name,san) 六、练习1、使用MySQL数据库进行数据存储,构建B/S应用,管理学生信息。学生信息(包含:姓名、性别、年龄、出生日期);功能有:添加学生信息、查看所有学生信息、修改指定学生信息、删除指定学生信息。1)添加学生信息a)构建客户端输入页面b)构建服务器端对象Servlet:获取客户端信息、创建数据库连接会话、持久化信息2)展示所有学生信息a)请求server,获取DB中学生信息,展示;分析:采用何种方式进行系统架构?Model一?Model二(MVC)?Model一系统架构:MVC系统架构:七、建模工具rose图形和文本之间比较(描述问题)图形的优点:一图胜千言。文本的优点:描述问题详细。1、用例视图a、用例视图描述系统功能。b、用例图中的元素用例(服务|功能)。参与者(系统使用者):分为自然人和机器人。参与者和用例直接使用带有箭头的实心线连接。注意:用例图是描述系统大服务功能的,不需要做的过于相信。我们不能过分依赖用例图。对用例图一定配文字说明。用例图结合文字描述系统的功能的过程所形成的文档称之为用例规约文档。2、逻辑视图逻辑视图包含:类图、状态图、时序图、活动图;这些图形的作用主要是在系统分析阶段和系统设计阶段使用的。在该阶段最终会形成详细设计文档。该文档的主要作用是指导开发人员实行系统。a、类图类图是用来描述软件实现中的各个类的。类分为:边界类、控制类、业务类、实体类。:各种类在MVC架构中的应用类之间的关系表示类之间的关系分为:依赖、泛化(继承)、关联(关联关系分为聚合和组合)关系。依赖关系图泛化关系图关联关系b、状态图和活动图状态图的侧重点是对象的状态变化。活动图的侧重点是分析引起对象状态发生改变的动作是什么。状态图和活动图主要用来分析复杂的业务对象的变化过程。从而得到域对象的相信属性。以及引发域对象状态改变的业务方法。c、时序图在系统分析与设计阶段。时序图是对状态图和活动图的补充。作业:a、使用状态图和活动图分析投影仪的工作方式。八、招聘管理用例图业务流程1、前置条件1.1、管理员必须登录2、主事件流2.1、输入应聘信息2.2、浏览应聘信息2.3、浏览人才库信息3、后置条件3.1、如果退出系统,一定点击安全退出分析应聘人员状态变化图根据分析构建域模型(普通的java类)和物理模型(数据模型)添加应聘信息功能时序图浏览应聘信息时序图招聘管理模块的第一种实现方式招聘模块的第二种实现方式九、数据源与连接池数据源(Datasource)数据存储的区域我们可以称之为数据源。即管理数据的区域称之为数据源。软件开发的本质就是处理不同来源及类型的数据。常见的数据源有数据库、文件。连接池(Connection Pool)程序对数据的处理无外乎增删改查(CRUD)。程序要想处理保存在数据源上的数据,则程序必须和数据源建立连接。在java环境下,如果数据源是文件;则可以通过输入(InputStream)、输出(OutputStream)流绑定文件(File)进行操作。如果数据源是数据库管理系统,则可以通过JDBC组件的DriverManager的getConnection(url,user,password)获取连接,进行数据处理。传统的数据库连接方式传统的数据库连接方式就是使用java.sql包的一系列接口和类完成的。但是这种方式的缺陷是:每次客户端操作数据时,都要创建连接对象,使用完毕后,并随之销毁连接对象。而连接对象的创建过程是复杂的。代价是高昂的。这样做不好。在开发阶段我们可以采用该方式管理数据源。但是在生产阶段这种方式是不可取的,在性能等方面是低下的。在生产阶段我们采用连接池的方式管理数据源的链接、销毁过程。在javax.sql.Datasource的接口。该接口定义了通过抽象数据源获取连接的方式。该接口是java.sql.DriverManager的替代。Apache组织有一套javax.sql.DataSource的连接池实现“DBCP”;其意思是Database Conne

温馨提示

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

评论

0/150

提交评论