java web的介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feivirus/article/details/53542659

一.java web发展过程

1.servlet 2.jsp 3.jsp model1(model和view混用) 4.jsp model2
5.spring 6.springmvc/struts2/webx 7.hibernate/mybatis

二 servlet

如图:
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

四 jsp model1

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

五 jsp model2

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

六 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方法.

猜你喜欢

转载自blog.csdn.net/feivirus/article/details/53542659