您的位置:首页 > 编程语言 > Java开发

java web的介绍

2016-12-09 18:06 246 查看

一.java web发展过程

1.servlet 2.jsp 3.jsp model1(model和view混用) 4.jsp model2

5.spring 6.springmvc/struts2/webx 7.hibernate/mybatis

二 servlet

如图:



1.HttpServlet继承自GenericServlet,GenericServlet实现了Servlet.

tomcat 容器接收到请求后,调用Servet.servce()->GenericServlet.service()->HttpServlet.service(ServletRequest, ServletResponse)->

HttpServlet.service(HttpServletRequest, HttpServletResponse)->HttpServlet.doGet(HttpServletRequest, HttpServletResponse)

2.springmvc的DispatcherServlet继承了FrameworkServlet,FrameworkServlet继承自HttpServletBean,HttpServletBean继承了HttpServlet.所以1的请求进入org.springframework.web.servlet.FrameworkServlet.doGet(HttpServletRequest, HttpServletResponse)->org.springframework.web.servlet.FrameworkServlet.processRequest(HttpServletRequest, HttpServletResponse)->org.springframework.web.servlet.FrameworkServlet.doService(HttpServletRequest, HttpServletResponse)->

org.springframework.web.servlet.DispatcherServlet.doService(HttpServletRequest, HttpServletResponse)

3.在DispatcherServlet的doService方法中,进入org.springframework.web.servlet.DispatcherServlet.doDispatch(HttpServletRequest, HttpServletResponse).

这个是springmvc的核心方法.

三 jsp

如图:



四 jsp model1

使用收集参数,在jsp里获取参数,业务及跳转 .如图:



五 jsp model2

在bean里实行获取参数,跳转,请求参数到模型没有封装,bean内跳转到”xxx.jsp”,和view层绑定严重。如图:





六 spring

ioc aop

1.id,name,scope 2.property type ref idref list map set property

3.constructor-arg index type 4.autowire by type byname 5.分散xml,property文件 __

6.连接数据库jdbc 7.aop MethodBeforeAdvice ProxyFactoryBean AfterReturningAdvice MethodInterceptor

ThrowsAdvice NameMatchMethodPointcut ControlFlowPointcut 7.Timertask SchedualedTimerTask

七 springmvc

(一).springmvc处理过程:

所有的请求转到DispatcherServlet来处理,先加载Spring 默认配置文件,路径为“/WEB-INF/[servlet名字]-servlet.xml”。

HandlerMapping用于从域名到哪个bean来处理,将对应的controller包装为HandlerExecutionChain

HandlerAdapter用于选择bean的什么方法来处理这个请求。将HandlerExecutionChain包装为SimpleControllerHandlerAdapter,然后调用对应bean的handleRequest方法,返回ModelAndView.

InternalResourceViewResolver使用JstlView渲染对应的ModelAndView为jsp文件显示.

HandlerExceptionResolver用于处理中间过程产生的异常.

ContextLoaderListener 初始化的上下文加载的Bean所在的xml文件是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层、Service层Bean;

DispatcherServlet 初始化的上下文加载的Bean 是只对Spring Web MVC 有效的Bean,如Controller、

HandlerMapping、HandlerAdapter等等,该初始化上下文应该只加载Web相关组件。

(二).springmvc内容

1. controller类型 MultiActionController,Controller,

2. PropertyEditorSupport类型转换

3. Validator验证器

4. springmvc 拦截器 HandlerInterceptor

5. springmvc 注解:url路径限定映射(@RequestMapping,@Controller),请求方法映射限定(method = RequestMethod.GET),请求参数数据映射限定(params=”submitFlag!=create”),请求头数据映射限定(headers = “!abc”),功能处理方法格式(ServletRequest/HttpServletRequest,InputStream/OutputStream,命令/表单对象),请求参数绑定(@RequestParam,@PathVariable,@CookieValue,@RequestHeader,@ModelAttribute,@SessionAttributes)

6. springmvc 数据验证

八 webx

(一).webx处理过程

对应的filter在xxx\src\main\webapp\WEB-INF目录下的webx**.xml中

1.请求处理过程.当一个HTTP请求到达时,首先由WebxFrameworkFilter接手这个请求.这个类在web.xml中配置.然后调用WebxRootController。WebxRootController对象存在于root context中,它被所有子应用所共享,由webx.xml配置。它会创建RequestContext实例,从而增强request、response、session的功能。接下来,WebxController对象会被调用。WebxController对象是由每个子应用独享的,子应用app1和app2可以有不同的WebxController实现。默认的实现,会调用pipeline。Pipeline也是由各子应用自己来配置的。假如pipeline碰到无法处理的请求,如静态页面、图片等,pipeline应当执行 valve强制退出。然后WebxRootController就会“放弃控制” —— 这意味着request将被返还给/WEB-INF/web.xml中定义的servlet、filter或者返还给servlet engine本身来处理。

2.pipeline配置.

处理过程见网页http://www.openwebx.org/docs/turbine.html .

重点:

对应的业务代码在main/java里面。对应的web页面在main/webapp/xxx/templates/screen/web里面.

(1)如果是performTemplateScreen.查找并执行screen这里要用到一个规则:target映射成screen module类名的规则。假设target为xxx/yyy/zzz,那么Webx Turbine会依次查找下面的screen模块:

screen.xxx.yyy.Zzz,

screen.xxx.yyy.Default,

screen.xxx.Default,

screen.Default。

本次请求的target为homepage,因此它会尝试查找screen.Homepage和screen.Default这两个类。

(2).如果是renderTemplate.这里用到两个规则:target映射成screen template,以及target映射成layout template。假设target为xxx/yyy/zzz,那么Webx Turbine会查找下面的screen模板:/templates/screen/xxx/yyy/zzz。Screen模板如果未找到,就会报404 Not Found错误。 找到screen模板以后,Webx Turbine还会试着查找下面的layout模板:

/templates/layout/xxx/yyy/zzz

/templates/layout/xxx/yyy/default

/templates/layout/xxx/default

/templates/layout/default

Layout模板如果找不到,就直接渲染screen模板;如果存在,则把渲染screen模板后的结果,嵌入到layout模板中。Layout模板和screen模板中,都可以调用control。每个页面只有一个screen,却可以有任意多个controls。

九 springmvc和webx区别

都是先有bean,再有页面,但是springmvc的页面路径是xml配置,webx的页面路径是约定路径。

webx的web页面渲染默认执行bean的public void execute(Context context)方法.json请求调用doXXX方法.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: