一、Servlet
Servlet是javaWEB的核心,简单的说就是用Java编写的服务器端程序。用户进行一个动态请求(静态请求就是直接请求HTML )时,实际上是请求—个servletWEB容器将Servlet加载到内存通过init方法进行初始化Service()方法根据请求方法调用对应的处理方法doPost()或doGet(),还有一些其他的请求方法doPut() doOptions()…但这些方法不常用,并且从安全的角度都是建议屏蔽的。当Server不再需要Servlet时(一般当Server关闭时),Server调用 Servlet 的 destroy() 方法。
二、JSPJava
Server Pages是一种静态编码町机和动态编码Java混合的技术, 也有说法就是将java代码镶嵌在HTML上,在JSP之前,Servlet作为主体,功能比较强大,设计也很先进,但瑜出 HTML页面却完全是Java的out.print(), 一行一句的输出,对于页面编写和修改来说非常不方便,这才促使SUN公司推出JSP。JSP和ASP、PHP类似都是镶嵌型语言。另外补充一下,WEB容器后动的时候,会将_JSP编译成Servlet,也有说法JSP是Servlet的升级版。
三、TomcatJava
WEB容器有很多,这里以Tomcat为例来说。前面说到,WEB程序必须运行在WEB容器上。Tomcat就是作为WEB容器来运行切Java WEB程序的。Tomcat是JAVA语言写的,需要JVM作为运行环境。
Tomcat的目录结构
bin………………………………可执行程序(脚本),启动停止调试Tomcat的一些bat.sh
conf…………………………….配置文件 webx.ml server.xml 等
lib………………………………Tomcat运行需要的jar包
logs…………………………….曰志文件
temp…………………………….临时文件
webapps………………………WEB 程序(编译后的项目文件)
work…………………………….将jsp文件生成java文件在此目录
进行补充说明一下,Tomcat将jsp编译成Java文件并不是实时进行的,所以有时候修改了页面,并没有及时生效,这时候我们只需要删除一下work目录下对应的文件即可。
四、Java WEB项目结构
一般来说,我们常说的Java项目基本上都是WEB项目(B/S架构),不是说Java不能做C/S程序,实际上Java的Swing就是画界面的,但是现在C#已经成为画界面最流行的语言,快速,简单,所以越来越少的人用Java来做C/S程序开发了。
我们主要来说Java WEB项目,下面是最基本的项目结构。src…………………………….JAVA源码,java文件目录webContent/webRoot……………项目发布目录
WEB-INFlib………………………………….项目需要的jar包web.xml…………………………WEB 程序的入口
以上是Java WEB项目的核心结构,实际开发中,搭建项目会比这些复杂,特别是引用框架以后,配置文件的增加,会添加一些新的目录。
五、开发框架
【java|JavaWeb学习心得】前面提到客户端发起动态请求时,请求到Servlet进行处理,然后返回,整个请求处理的工作都是在Servlet中处理的,看起来比较简单,每当需要一个不同的请求就写一个Servlet,但实际开发的时候如果功能模块比较多,就需要写很多个Servlet,并且如果我们想修改一个请求的返回,也必须通过修改Java代码 (Servlet)的方式来实现。这样对功能的扩展和维护来说,就比较麻烦了,所以也就推动了很多集成幵发框架的流行,比如Webwork,Struts,SpringMVC,Jfinal等都是主流的Java WEB开发框架。使用框架有一个很笼统的优点概述,可以加快开发进程,在类似项目中重用代码将为开发者节省大量的时间和精力.框架为执行繁琐的代码任务提供预建模块。让使用者只关心核心业务的开发,框架帮你屏蔽原有技术跟业务开发无关的各类技术问题。但如果想要深入的了解一个框架,使用的更加熟练,还是需要了解底层的原理,找到其源头也就是Servlet。以SpringMVC为例简单描述一下工作原理SprfngMVC主要也是通过DispatcherServlet (Servlet调配器,在web_xml中配置)实现了Servlet这个接口,又叫前端控制器,来自前端的请求会先到达这里,它负责到后台去匹配合适的handler。DispatcherServlet的主要工作流程如下:
1、 客户端发出http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
2、 DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器Controller (Handler)。
3、 DispatclierServlet 根据 HandlerMapping 找到对应的Handler,将处理权交给Handler ( Handler将具体的处理进行封装),再由具体的 HandlerAdapter对Handler进行具体的调用。
4、Handler对数据处理完成以后将返回一个ModeAndView对象给DispatcherServlet
5、 Handler返回的ModelAndView只是一个逻辑视图并不是一个正式的视图,Di spatcherSevlet通过ViewResolver将邀辑视图转化为真正的视图view(这句话简单的就是返回一个要返回的页面的相对路径,通过试图解析器转换成具体那个页面)。
6、 Dispatcher通过model解析出ModeAndView中的参数进行解析最终展现出完整的view并返回给客户端。
推荐阅读
- js|Get、Post请求的区别与接收数据的方法
- #|JavaWeb之期末总复习资料(二)
- java|设计有一个getMin功能的栈( java )
- 日常记录|IDEA中启动TomCat失败,提示: 1099 is already in use 解决办法【实际并未占用】
- java|使用堆内内存HeapByteBuffer的注意事项
- Java|java集合之ArrayList详解
- 数据结构与算法|集合总结--ArrayList、LinkedList、HashMap
- Java|第十二篇(Java集合详解、ArrayList、Vector、LinkedList、Queue、PriorityQueue、Deque、HashSet、TreeSet)
- java|java常用集合详解