第一篇:Java web开发的学习过程
Java web开发的学习过程
不知不觉从开始学习Java到现在已经有三年多的时间了。
这三年多里,自己真的学到了很多,也做了一些商业项目的开发。最近有一些师弟在问我,如何去学习Java Web开发,在这里我简单地总结一下我这三年多来的学习过程,希望对他们有一些帮助。
1.java基础。这是最基本的,也是最重要的,熟悉java语言基础不只在面试的时候有帮助,在以后的开发过程中也是不可或缺的。从一无所知到基本上能够写出一些小程序,我是花了有两个多月的时间的。但是我的java基础还不行,所以打算最近再恶补一下thinking in java这本经典。
2.HTML+CSS+Javascript。学完java基础之后,如果真的要学web开发,那么就必须得学习HTML+CSS+Javascript,能够写出静态的页面。这些算比较简单的,但是javascript的话,我没有学得很好,但是还是算会用。
3.SQL语法,MySQL,Oracle数据库操作,PL/SQL语言。因为我们做的系统大部分是信息管理系统,所以数据库操作是必须的,最好也找数据库设计相关的书来看。
4.JDBC+JSP+Servlet的开发。应该要先了解MVC的概念,了解如何用JSP+Servlet来实现MVC结构的系统。这也是非常重要的,MVC这种思想虽然现在有些人觉得它很旧,很out了,但是目前大部分的系统还是用这种思想来实现的。而且这三种技术也是基础中的基础。我当时花了一个多月的时间学的,而且还写了一个《汽车销售》的课程设计。
5.SSH。然后就开始进入流行的开源框架这一块了。SSH绝对是目前最流行的JavaEE开发技术,特别是在国内,虽然有些公司有自己的框架,但是大部分也是基于SSH的,或者说思想和SSH是一致的。所以这三个框架也是必备的。我是花了有三个月的时间在这上面,而且也只是会用而已,对其中一些比较核心的东西还是不懂。
6.AJAX。AJAX的话算是比较简单,学习完它的原理后,可以用一些流行的开源框架来实现,如果DWR。也可以顺便学习一下JQUERY和Prototype,可以让你的AJAX应用更加便捷。
7.XML。XML也是重中之重,开发时的法宝之一。
8.如果学习完以上七个部分,那么去一般做Java Web的软件公司都是没有问题的了。但是现在关键的是熟手多,高手少。真正要成为高手,还有很长的路要走,包括时刻关注java web的发展,不断地学习一些新的技术,一些新的框架。也要开始学着如何去架构,包括如何去做性能调优,如何去做更好的数据库设计,如果去做项目管理等。
所以目前我跟所有刚开始学习java的人们一样,都是有很长的路要走,只要脚踏实地,一步一步向目标迈进,我想,没有什么可以难倒我们的。
第二篇:javaweb开发要学习的所有技术和框架总结:
学习javaweb开发要学习的技术和框架总结:
前言:当初想学习javaweb开发的时候,希望能够全方面地学习(这样找工作时就胸有成足了)。但是对这个根本不理解,又不认识从事这方面的熟人,所以学习起来无从下手。经过了一年的‘死’学习,从网上,从书本,从视频里面深入了解了java。想从事java的朋友,只要把这些技术全学会了,哪就业肯定没有问题了。
前端技术:
HTML, CSS, JAVASCRIPT, JQUERY, AJAX HTML “超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(外语:Head)、和“主体”部分(外语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。
CSS 级联样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
JavaScript JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
jQuery jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。AJAX AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
Javase Javase学习是javaee的基础,不管学习javaee(web)还是javame(安卓),但必须深入学习javase。Javase学习:java语法,数组,集合,面向对象,异常处理,多线程,GUI,注解,泛型,反射,动态代理。
javaee:
xml编程,http协议,servlet,jsp,javamail,javabean,el表达式,jstl自定义标签,会话管理(session,cookie)。
servlet
是在服务器上运行的小程序。这个词是在Java applet的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。
JSP
全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。
用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
EL表达式(Expression Language)
目的:为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。
会话管理(session,cookie):
JavaMail avaMail 顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。
SSH
ssh为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。
其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。
具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。
系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。
这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。
struts struts 是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。
Struts 是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
spring spring 是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。
它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
hibernate Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。
Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
MyBatis MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
JBPM JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。
jBPM是公开源代码项目,使用它要遵循 ASL(Apache License Version 2.0),EULA(JBoss End User License Agreement)协议。
Maven Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Lucene Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。
在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。
第三篇:javaweb学习课程总结
总结一:javaweb课程总结
刚开始学的时候,感觉这两门课程好高大上的样子,因为自从学软件工程这个专业以来,一直都是学的理论性、框架性的东西,就没有接触到编程的实质性的部分,终于开始学编程了,感觉蛮兴奋的,也是精神饱满,信心十足,怀着一腔热血来听课。
由于JAVAWEB和JSP两门课是同时上的,而且每次都是一整上午,上课时间很长,老师一直有条不紊的讲着,虽然时间很长,但是每当大家上完课,心中都是有一种充实的感觉,大家都觉得有所收获,所以也就不曾觉得累了。
JAVAWEB这门课让我认识了以前见所未见闻所未闻的专业术语,Web应用程序的概述。我从中了解到Web应用程序的三层体系结构:表示层、业务层、数据存取层。从而想到了学数据库设计时的数据库设计三大范式,它们同是叙述在编写代码时应做的规划和应遵循的规则,这种规划在以后的学习中时有出现,说明编程并不是一味地进行循环判断、死记硬背,而需要在技术上有所加强、在效率上有所提高。做任何事都是如此,事先必须有目标、有计划,有统筹,这样执行时才不会盲目,才不会事倍功半。学习编程对综合能力都是一种培养。
接下来是JSP知识。要学JSP,就必须会HTML,如果HTML学不通,这对以后的学习都是一个瓶颈。基础一定要打扎实,吃透,否则上层建筑的建起就不会很顺利甚至没法起步。然后是JavaBean。以下是个人对JavaBean的一点学习体会。JavaBean里有set()和get()方法,用这些方法能很容易地传值,逻辑上更标准,代码看起来也更规范。但set()和get()方法只是用来对属性进行操作的,所以如果是进行复杂的逻辑或对数据库进行操作等,那么就不要写成set()和get()方法,只用一个有返回值的方法就足以。这样直观方便,且符合规范。总之,set()和get()方法不要没有效率地滥定义。
接着是Servlet。Servlet是一个用Java编写的应用程序,在服务器上运行,用来处理请求和响应,也可以单独做为一个Web页面。然后讲的是标签,包括自定义标签和JSP标准标签库。用一般的Java代码都几乎能实现它们的功能。它们的好处是提高了代码的重用性。
我们需要配置的坏境有JDK,Tomcat,还要用到Myeclips这一基础的编程工具。在学习JSP之前,由于没有网页编程的基础,便学习了HTML这种文本标记语言,自己试着去做简单的静态网站。后来学做JSP动态网站时,就涉及到了多方面的知识,JSP内部对象及内部对象所涉及的方法,JSP与数据库连接,如何去引用数据库。这门课更是巩固了JAVA这一基础编程语言,要求对JAVA掌握的要透彻,每门语言要学扎实,深入理解,都要花费很大的功夫,不是容易的事情。
Jsp与servlet有一定的区别,Servlet可以看作是HTML的Java代码,而JSP可看作是包含Java代码的HTML。共同点:JSP和Servlet实际上是一回事。JSP页面最终要转换成Servlet,并进行编译,在请求期间执行的实际上是编译后的Servlet。因此,JSP页面不过是编写Servlet的另一种方式。各自应用的范围:Servlet比较适合于做处理任务,如做业务逻辑;JSP适合于表示任务,如网页制作,生成动态网页。
对JAVAWEB和JSP课程的知识就简单介绍到这里,本学期的这两门课程让我对软件工程这门课有了一个全新的认识,我真切的学到了能用的东西,大学里的很多课是浪费时间,而把时间花在学习这两门课上,不会觉得是在虚度光阴,相反,会有一种无比满足与充实的感觉,感谢彭老师半年以来的精心教诲,感谢这两门课给我带来快乐!
总结二:javaweb课程总结
今天老师讲的一定的程度了,发现有一些细节,自己并没有学好,如下是自己认为自己学的模糊的地方。
1.www是(worldwideweb)万维网,www的客户端程序:ie,foxfire.2.什么叫web服务器,就是一段网络程序,让人们通过浏览器可以看到任何主机上的内容(通俗的说法).3.微软开发的搜索引擎?Bing
4.B/S结构的知名缺点是什么?
受浏览器功能的限制。
C/S结构的优点,在实际中还有一部分地方需要它。如:游戏。
5.老师说再过五年就没有操作系统了,搜索引擎是未来发展的趋势。学JAVAweb就是做网站,保证以后20年活得比较滋润。
6.常见的web服务器
weblogic是bea公司
WebSphere是IBM公司
Tomcat是免费的,是Apache
7.建议使用压缩的TOMCAT的安装版,因为现实
中我们是这样用的。
8.安装tomcat的常见问题。
在这里要学习一门语言:批处理编程。打开STARTUP.BAT.1.说catalina_home没有配置
2.一安装完闪就没有了。
解决方法:
1.环境变量设置catalina。还有JAVA_HOME的配置
2.端口被占有的问题。
3.安装多个tomcat,解决方法进入当前的安装目录中双击startup.bat进入。
总结三:javaweb课程总结
我们的JSP课程终于结束。掐指算来,用一个多月的时间。这次的课程和以往的课程有一些不同。一是,需要理解的概念、专业术语很多。比如,JavaWeb里引入了Web体系结构、MVC设计模式等的概念,出现了Servlet、JavaBean、Scriptlet、JSTL等无法替代的术语;二是,这次学习的内容和Internet接轨,十分实用。比如,第四章讲解了JavaMail,这是一个用来发送接收邮件的组件。学完JSP,既复习了Java的知识,又具备了做网站的能力。
回想一下这个阶段的过程。
第一章是对Web应用程序的概述。我从中了解到Web应用程序的三层体系结构:表示层、业务层、数据存取层。从而想到了学数据库设计时的数据库设计三大范式,它们同是叙述在编写代码时应做的规划和应遵循的规则,这种规划在以后的学习中时有出现,说明编程并不是一味地进行循环判断、死记硬背,而需要在技术上有所加强、在效率上有所提高。做任何事都是如此,事先必须有目标、有计划,有统筹,这样执行时才不会盲目,才不会事倍功半。学习编程对综合能力都是一种培养。
接下来学的是JSP知识。要学JSP,就必须会HTML,如果HTML学不通,这对以后的学习都是一个瓶颈。这点我有所体会。因为我对HTML掌握得比较好,在这方面没有遇到什么困难。但如果没掌握好这些知识,加上要学新知识,就会在旧难题的基础上增加新难题,两头招架,实有些吃不消。所以,基础是很重要的,基础一定要打扎实,吃透,否则上层建筑的建起就不会很顺利甚至没法起步。
然后是JavaBean。以下是个人对JavaBean的一点学习体会。JavaBean里有set()和get()方法,用这些方法能很容易地传值,逻辑上更标准,代码看起来也更规范。但set()和get()方法只是用来对属性进行操作的,所以如果是进行复杂的逻辑或对数据库进行操作等,那么就不要写成set()和get()方法,只用一个有返回值的方法就足以。这样直观方便,且符合规范。总之,set()和get()方法不要没有效率地滥定义。
接着是Servlet。一上手,我第一个感觉是,很专业、很难懂。书上介绍了一大堆接口、类、和重写的方法,一时觉得晕头转向。后来用得多、看得多了,Servlet的基本格式也记得差不多,其实也没什么难的。只要记住Servlet是一个用Java编写的应用程序,在服务器上运行,用来处理请求和响应,也可以单独做为一个Web页面,就足够了。
在EL表达式这章,我遇到了一些困难。课后作业题完成得不顺利。但通过后面的学习,我了解到,EL表达式最大的作用是在各种标签里使用。标签以外对变量的引用,用其他方法,比如JSP表达式就能够达到目的。
然后讲的是标签,包括自定义标签和JSP标准标签库。这两章的内容不太常用。因为用一般的Java代码都几乎能实现它们的功能。它们的好处是提高了代码的重用性。标准标签库里有几个比较有用的标签,比如forTokens和setBundle,这两个标签的作用是一般代码实现不了的。
最后一章是MVC设计模式。所谓MVC,就是Model(JavaBean)、View(JSP)、Controller(Servlet),和第一章讲的Web应用程序三层体系结构相呼应。结合起来,可以这样理解。Model是数据存取层,View是表示层,Controller是业务层。用这样的规则编写网站,能做到逻辑分明,代码重用度高,便于维护等。
以上就是对这阶段学习的回顾。
通过学习JSP,我了解了更多的编程概念和理念,更增强了信心,只要有克服困难的勇气和决心,就没有什么难关无法克服。我会抱着十足的勇气和决心向下一个阶段挑战。
从一期学到现在,我对Java有了一个比较具体的认识。
Java的特点是:面向对象、跨平台、可移植。面向对象的涵义是,这种语言可以形象地模拟现实生活中的实物。在面向对象的语言中,“类”是对一组实物的共同特征描述,“对象”是类的实例,同一个类的一些对象具有类所定义的共同特点。面向对象的三大特点是“封装”、“继承”和“多态”。封装的表现有三,一是它把数据成员zǔzhīzà(因为这里被屏蔽,所以用拼音)在一起,形成一个整体;二是它可以隐藏细节,简化操作,比如,声明一个JTextField类的对象,你可以实现这个API中所有的功能,但看不到这个类的代码;你可以直接调用它的setText()、getText()等方法,而不用考虑它具体是怎么实现的。三是它可以保护数据,比如,一个类里有privateintage的属性,产生一个setAge(intageTemp)的方法,在这个方法里对传入的参数进行检验,如果不符合要求,就不对age赋值。
第四篇:JavaWeb学习总结
一、基本概念
1.1、WEB开发的相关知识
WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。
Internet上供外界访问的Web资源分为:
1.静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
2.动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
静态web资源开发技术:Html
常用动态web资源开发技术:JSP/Servlet、ASP、PHP等
在Java中,动态web资源开发技术统称为Javaweb。1.2、WEB应用程序
WEB应用程序指供浏览器访问的程序,通常也简称为web应用。例如有a.html、b.html„..多个web资源,这多个web资源用于对外提供服务,此时应把这多个web资源放在一个目录中,以组成一个web应用(或web应用程序)
一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件,Jsp文件、java程序、支持jar包、配置文件等等。
Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射 1.3、WEB发展史
WEB发展的两个阶段:静态、动态 1.4、静态WEB
*htm、*html,这些是网页的后缀,如果现在在一个服务器上直接读取这些内容,那么意味着是把这些网页的内容通过网络服务器展现给用户。整个静态WEB操作的过程图如下:
在静态WEB程序中,客户端使用WEB浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给WEB服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过WEB服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。
静态WEB中存在以下几个缺点:
1、Web页面中的内容无法动态更新,所有的用户每时每刻看见的内容和最终效果都是一样的。
为了可以让静态的WEB的显示更加好看,可以加入了JavaScript以完成一些页面上的显示特效,但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。
实现静态WEB客户端动态效果的手段:
JavaScript VBScript
在实际的开发中JavaScript使用得最多。
2、静态WEB无法连接数据库,无法实现和用户的交互。
使用数据库保存数据是现在大多数系统的选择,因为数据库中可以方便地管理数据,增删改查操作可以使用标准的SQL语句完成。1.5、动态WEB
所谓的动态不是指页面会动,主要的特性的是:“WEB的页面展示效果因时因人而变”,而且动态WEB具有交互性,WEB的页面的内容可以动态更新。整个动态WEB操作的过程图如下:
动态WEB中,程序依然使用客户端和服务端,客户端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(服务器插件)来处理,此插件用于区分是请求的是静态资源(*.htm或者是*.htm)还是动态资源。
如果WEB Server Plugin发现客户端请求的是静态资源(*.htm或者是*.htm),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。
如果WEB Server Plugin发现客户端请求的是动态资源(*.jsp、*.asp/*.aspx、*.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。1.6、动态WEB应用的实现手段
动态WEB现在的实现手段非常多,较为常见的有以下几种:
Microsoft ASP、ASP.NET PHP JAVA Servlet/JSP
1、Microsoft ASP、ASP.NET
微软公司动态WEB开发是比较早的,而且最早在国内最流行的是ASP。ASP就是在HTML语言之中增加了VB脚本,但是标准的开发应用应该是使用ASP+COM,但是实际情况来看,在开发ASP的时候基本上都在一个页面中写上成百上千的代码,页面代码极其混乱。
ASP本身有开发平台的限制:Windows+IIS+SQL Server/Access,ASP只能运行在Windows操作系统上,ASP现在基本上已经淘汰,现在基本上都是使用ASP.NET进行开发,ASP.NET在性能有了很大的改善,而且开发迅速,但是依然受限于平台。ASP.NET中主要是使用C#语言。2.PHP
PHP开发速度很快,功能强大,跨平台(平台指的就是运行的操作系统),而且代码也简单。3.Servlet/JSP
这是SUN公司(SUN现在已经被Oracle公司收购)主推的B/S架构的实现语言,是基于JAVA语言发展起来的,因为JAVA语言足够简单,而且很干净。
Servlet/JSP技术的性能也是非常高的,不受平台的限制,各个平台基本上都可以使用。而且在运行中是使用多线程的处理方式,所以性能非常高。
SUN公司最早推出的WEB技术推出的是Servlet程序,Servlet程序本身使用的时候有一些问题,所有的程序是采用JAVA代码+HTML的方式编写的,即,要使用JAVA输出语句,一行一行地输出所有的HTML代码,之后,SUN公司受到了ASP的启发,发展出了JSP(Java Server Page),JSP某些代码的编写效果与ASP是非常相似的。这样可以很方便地使一些ASP程序员转向JSP的学习,加大市场的竞争力度。
二、WEB服务器 2.1、WEB服务器简介
1、Web服务器是指驻留于因特网上某种类型计算机的程序,是可以向发出请求的浏览器提供文档的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。
2、服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应。
2.2、常见的Web服务器介绍
1、WebLogic
WebLogic是美国bea公司出品的一个application server。BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。是目前应用最广泛的Web服务器,支持J2EE规范,而且不断的完善以适应新的开发要求,启动界面如图
2、WebSphere
WebSphere Application Server 是一种功能完善、开放的Web应用程序服务器,是IBM公司电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理 Internet 和 Intranet Web 应用程序。这一整套产品进行了扩展,以适应 Web应用程序服务器的需要,范围从简单到高级直到企业级。启动界面如图:
3、Tomcat
TomcatTomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且开源免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。学习JavaWeb开发一般都使用Tomcat服务器,该服务器支持全部JSP以及Servlet规范,启动界面如图:
4、IIS
Microsoft的Web服务器产品为Internet Information Services(IIS),IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。ⅡS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在ⅡS的平台上。IIS提供了一个图形界面的管理工具,称为Internet信息服务管理器,可用于监视配置和控制Internet服务。
IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。
学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。
三、搭建JavaWeb应用开发环境——Tomcat服务器
3.1、疑问:学习web开发,为什么必须要先装一个WEB服务器?
在本地计算机上随便创建一个web页面,用户是无法访问到的,但是如果启动tomcat服务器,把web页面放在tomcat服务器中,用户就可以访问了。这说明什么问题?
1、不管什么web资源,想被远程计算机访问,都必须有一个与之对应的网络通信程序,当用户来访问时,这个网络通信程序读取web资源数据,并把数据发送给来访者。
2、WEB服务器就是这样一个程序,它用于完成底层网络通迅。使用这些服务器,We应用的开发者只需要关注web资源怎么编写,而不需要关心资源如何发送到客户端手中,从而极大的减轻了开发者的开发工作量。3.2、下载和安装Tomcat服务器
Tomcat官方站点:http://jakarta.apache.org
下载Tomcat安装程序包:http://tomcat.apache.org/
点击【Download】跳转到如下图所示的下载页面
1.tar.gz文件是Linux操作系统下的安装版本 2.exe文件是Windows系统下的安装版本 3.zip文件是Windows系统下的压缩版本
下载完成后,得到的是一个压缩包,将压缩包解压就可以完成Tomcat服务器的安装
将压缩包解压后,得到的就是如下图所示的文件夹,这样就完成了Tomcat服务器的安装。
3.3、启动和测试Tomcat服务器
启动Tomcat服务器
双击 bin 目录下的 startup.bat 文件启动Tomcat服务器
测试Tomcat服务器
打开浏览器,输入http://localhost:8080/,能显示如下界面代表安装成功。
3.4、Tomcat启动常见问题
导致Tomcat服务器无法正常启动的原因一般来说就是如下的两个:
1、JAVA_HOME环境变量设置问题
要想双击bin目录下的startup.bat文件启动Tomcat服务器,首先要做的就是在windows中设置JAVA_HOME环境变量,因为Tomcat服务器的启动需要用到这个JAVA_HOME环境变量,如果windows中不存在JAVA_HOME环境变量,则Tomcat服务器是无法启动的。
在Window中配置JAVA_HOME变量
操作步骤(win7系统):计算机→右键“属性”→高级系统设置→高级→环境变量,如下图所示:
点击系统变量下面的“【新建】”,弹出一个新建系统变量对话框,首先在变量名写上JAVA_HOME,顾名思义,JAVA_HOME的含义就是JDK的安装路径,然后在变量值写JDK的安装路径,如这里设置的变量值是“D:Program Files(x86)Javajdk1.7.0”,设置好变量值之后,点击【确定】按钮,JAVA_HOME环境变量就设置完成,如下图所示:系统变量中多了一个“JAVA_HOME”变量。
正常来说,学习Java开发的第一步就是配置Path环境变量,比较好的配置方式是先配置JAVA_HOME环境变量,然后在Path变量中使用“%JAVA_HOME%”引用JAVA_HOME变量的值。
所以这个JAVA_HOME环境变量在Window中一般都是已经配置好了的,如果忘记配置JAVA_HOME环境变量,那么可以使用上述的方式配置
2、端口占用问题
因为Tomcat服务器启动时是需要默认是使用8080端口的,如果这个8080端口被别的应用程序占用了,那么Tomcat服务器就无法正常启动,看到的现象就是“Tomcat服务器启动界面会打印出异常错误信息,然后就自动关闭了”,如下图所示:
由于这个窗口从启动到关闭的时间非常短,我们很难通过这个窗口看到Tomcat启动时的报错异常信息,因此我们一般只能通过Tomcat服务器的记录的log(日志)信息去查看Tomcat服务器的运行情况。
在Tomcat服务器的根目录下有一个logs文件夹,logs文件夹存放Tomcat 的日志文件,打开logs文件夹,可以看到里面的log文件,其中有一个以“catalina.yyyy-MM-dd.log”形式命名的log文件,例如“catalina.2014-05-17.log”日志文件就是记录Tomcat服务器2014-05-17这一天的运行情况。
打开catalina.2014-05-17.log文件,看看里面的日志记录信息,日志信息里面清楚的记录了Tomcat服务器的运行情况,如果因为8080端口被占用而无法正常启动,就会记录如上图所示的异常信息,通过查看异常信息,我们就可知道Tomcat服务器为什么不能够正常启动了!
总结:当Tomcat服务器无法正常启动时,首先检查是否配置了JAVA_HOME环境变量,然后再检查Tomcat服务器启动时的端口是否被别的应用程序占用了。
第五篇:javaWeb学习[小编推荐]
JavaWeb学习笔记___d9.txt
2010-12-14 22:51
Session(会话)
Session对象
1、存在于服务器端
2、依赖于线程
3、Session的生命周期,跟一次浏览器窗口有关,只要窗口不关闭,Session便存在,所以称会话。
Session1、技术内核使用cookie:
session参在与服务器端
服务器端为多个session创建不同的session id
把session id以cookie的形式送入到客户端
request.getSession()内涵是:在cookie中查找
session id,若cookie中存在sessionId,则根据
sessionId,将sessionID对应的session找到,并返回;若cookie中并不存在sessionID,服务器端创建session,并将sessionID写入到Cookie中。
2、当关掉对话窗口(结束一次会话)时,session并没有被删除,只是关掉对话窗口时,cookie被清空
无法再获得sessionID,无法找到对应的session,但是session还是存在于服务器端。
若想真正删除session,需要调用HttpSession中的invalidate()方法,使得session失效。
3、服务器为了考虑效率,不会让无用的session存在很久,Http协议是无连接协议,服务器端无法判断客户端是否关闭“会话”,所以服务器设置了失效时间。若用户在了段时间内,不操作session,则系统删除session。
我们可以设置此时间setMaxInactiveInterval(),但不推荐用户自行设置。
4、session技术在很大程度上,依赖于Cookie,若Cookie被禁用,或浏览器不支持Cookie,则session就无法使用。
5、为了解决第四点所引申的session不可用的问题。我们使用URL重写,将sessionID通过地址栏提交参数,发给服务器端。
使用response.encodeURL()在地址栏中加载sessionID通过
request.getParameter(jsessionid)得到sessionID
a、String url encodeURL(String url);通过超链接,重新发出请求,此请求会在地址之后自动加上sessionID及其ID值,此方法又被子称为URL重写,或重新封装。
b、String url encodeRedirectURL(String url);将地址封装成sendRedirect方法所需要的地址,并在此地址后加入sessionID
Servlet API小结:
HttpServletRequest:接口
1、setAttribute()、getAttribute()、getAttributeNames
getParameter()//只能获得表单中的内容
2、getCharacterEncoding()、setCharacterEncoding()
获得、设置request中的数据编码方式
3、getContentType()得到MIME,即IE文件打开的方式
4、Cookie[] getCookies()
得到当前所有的cookie5、getSession()
获得或创建session6、getRequestDispatcher(String path)将目标页面封装,为了forward()进行页面转向。
7、getRequestedSessionId()得到一个session的id
总结:
request对象封装了客户端的请求和相关信息。
包括:
1、cookie2、封装http协议的报头(请求方式、请求服务器的端口、请求服务器ip地址、编码方式、请求的项目用的名字、请求消息的长度、浏览器的信息、客户端信息„„)
3、表单数据
HttpServletResponse:接口(响应)
用它跟客户端联系,并且向客户端发送数据
1、getCharacterEncoding()得到向客户端发送数据的默认编码方式。
2、getContentType()得到向客户端发送数据的默认类型(html或者jpeg等等)。
3、getOutputStream()得到与客户端建立的输出字节流,传输二进制。
4、getWriter()得到与客户建立的输出字符流,传输文本文件。
5、setCharacterEncoding()设置的是要发送给客户端的数据的编码方式。
6、setContentType(String type)设置并告知客户端,执行这些二进制时,用何种类型打开(html、jpeg等等)。
7、addCookie(Cookie cookie)将cookie的键和键值成对的送到客户端
8、一些的set方法用来指定客户端运行时的一些属性。例:缓存、打开方式、消息头的控制等等
9、encodeURL(String url)、encodeRedirectURL(String url)**在地址后追加session的id,用来实现cookie被禁用后,session依然可以使用。
10、sendRedirect(String location)页面的重定向
Cookie:类
1、Cookie(String name,String value)创建Cookie并将键,键值,存入到Cookie中
2、getMaxAge(int)设置Cookie的生命服周期,当参数是负数时:窗口(会话)被关掉时,清空Cookie3、getName()获得Cookie中的键
4、getValue()获得Cookie中的健值
HttpSession:接口
1、getAttribute(String name)、setAttribute(String name)
2、getId()获得session的唯一标识id3、getMaxInactiveInterval()、setMaxInactiveInterval()得到和设置session的失效时间
4、invalidate()使得session失效
5、isNew()布尔类型,判断session是否是新创建的HttpServlet:类
1、doGet(HttpServletRequest req,HttpServletResponse resp)
当用户以get方式发出请求时,servlet调用此方法
2、doPost(HttpServletRequest req,HttpServletResponse resp)当用户以post方式发出请求时,servlet调用此方法
3、public void init()throws ServletException
用户第一次请求servlet的时候,容器需建立servlet对象,同时调用init()方法
4、service(ServletRequest req,ServletResponse res)
开辟多线程,并根据用户提交的方式,选择调用doGet()还是doPost()方法
此方法不建议重写