Struts2和SpringMVC简单配置以及区别总结
Struts2:
struts 2 是一个基于MVC(mode-view-con)设计模式的Web应用框架,是由Struts1和WebWork两个经典框架发展而来的。
工作流程:
1客户端浏览器发出HTTP请求
2根据web.xml配置,该请求被FilterDispatcher(过滤器调度员)接收
3根据struts.xml配置,找到需要调用的Action类和方法,并通过IOC(控制反转)方式,将值注入给Action
4Action调用业务逻辑组件处理业务逻辑
5Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应的页面
6返回HTTP响应到客户端浏览器
struts2配置过程:
1:导入Struts2核心jar包,在web.xml配置过滤器filter。 //注:过滤器作用主要是过滤request请求
<!--配置struts2过滤器-->
<!--配置filter需要配置<filter>和<filter-mapping>标签-->
<!--<filter>标签配置Filter名称,实现类以及初始化的参数。可同时配置多个初始化参数-->
<filter>
<filter-name>struts2Filter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!--<filter-mapping>标签配置什么规则下使用这个Filter-->
<filter-mapping>
<!--<filter-name>与上面Filter的那么匹配-->
<filter-name>struts2Filter</filter-name>
<!--<url-pattern>:配置url的规则,可以配置多个,也可以使用通配符(*),可配置多个url-pattern.-->
<url-pattern>/*</url-patten>
</filter-mapping>
15 <!--常用的Filter有字符编码Filter、防盗链Filter、权限校验Filter、GZIP 压缩 Filter、文件上传Filter-->
<!--在这里这些Filter就不一一配置了,如果想了解的话可以看这个人的博客: https://blog.csdn.net/u012228718/article/details/39521677/,很详细。-->
2:配置struts.xml;在src目录下创建struts.xml文件,这里主要是配置Action。
<package name="user" namespace="/user" extends="struts-default">
<action name="list" class="action.UserAction" method="list">
<result name="success">/list.jsp</result>
</action>
<action name="add" class="action.UserAction" method="add">
<result name="success">/add.jsp</result>
</action>
<action name="delete" class="action.UserAction" method="delete">
<result name="success">/delete.jsp</result>
</action>
<action name="update" class="action.UserAction" method="update">
<result name="success">/update.jsp</result>
</action>
</package>
SpringMVC:是spring提供的一个强大而灵活的WEB框架,在springmvc中是通过dispatcherservlet来管理request请求的。
Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。
1.DispatcherServlet:主要负责接受HTTP请求,协调springmvc各个组成部分工作。其主要功能:
1).截获符合特定格式的URL请求。
2).初始化DispatcherServlet上下文对应WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
3).初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。
2:处理器映射(HandlerMapping):能够完成客户请求到Controller的映射。
3:处理器(控制器Controller):功能和struts2的action功能是一样的,当Controllert处理完用户请求后,则返回ModeAndView给DispatcherServlet前端控制器。
4:视图解析器(ViewResolver):spring提供视图解析器在WEB应用中查找View对象,从而将结果渲染给客户。
SpringMVC配置过程:
1:配置web.xml,主要在配置中设置springmvc-context.xml的路径
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:META-INF/spring/springmvc-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2:配置spring-context.xml文件,这一部分主要是开启注解功能、配置试图解析器
1 <!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
2 <context:component-scan base-package="com.zs" />
3
4 <!-- 这两个类用来启动基于Spring MVC的注解功能,将控制器与方法映射加入到容器中 -->
5 <beans:bean
6 class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
7 <beans:bean
8 class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
9
10 <!-- 这个类用于Spring MVC视图解析 -->
11 <beans:bean id="viewResolver"
12 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
13 <beans:property name="prefix" value="/WEB-INF/pages/" />
14 <beans:property name="suffix" value=".jsp" />
15 </beans:bean>
Struts2和SpringMVC的区别:
1:Struts2的核心是基于Filter,即StrutsPreparedAndExcuteFilter。
SpringMVC的核心是基于Servlet,即DispatcherServlet(前端控制器)。
2:Struts2是基于类开发的,传递的参数是通过类的属性传递,所以只能设置为多例模式。
SpringMVC是基于类的开法开发的,也就是一个url对应一个方法,传递的参数是传到类的形参上,即可设置为单例模式也可设置为多例模式。
3:Struts2是采用值栈存储请求以及响应数据,OGNL存取数据。
SpringMVC是request来解析请求,然后其内部的getParmater方法来给方法形参赋值,然后在把处理后的数据通过ModeAndView存储,Mode存储数据,View存储返回的页面,再把对象通过request传输到页面去。
4:拦截器机制不同:SpringMVC是独立的AOP实现的,而Struts2有自己的interceptor机制。
5:Spring MVC和Spring是无缝(无缝:无须数据格式转换,直接访问来自数据源数据格式)的。从这个项目的管理和安全上也比Struts2高;
Struts2和SpringMVC简单配置以及区别总结的更多相关文章
- SpringMVC简单配置
SpringMVC简单配置 一.eclipse安装Spring插件 打开help下的Install New Software 点击add,location中输入http://dist.springso ...
- Struts2和SpringMVC的区别
简单谈一下Struts2和SpringMVC的区别,文章有所引用知乎所对应的答案数据,和所查看的其余资料数据,进行一个简单的汇总,后续查看时使用: 知乎解释链接为:https://www.zhihu. ...
- Idea简单SpringMVC框架配置
前边已经介绍过了Struts在Idea上的配置,相对于Struts来说,我觉得SpringMVC有更多的优势,首先Struts是需要对action进行配置,页面发送不同的请求,就需要配置不同的acti ...
- struts1和struts2和springMVC的区别和介绍
MVC是web开发常用的模式,M即模型层(Model):主要由javabean来实现.V即视图层(View):主要由jsp.velocity.freemarker等.C即控制层(Controller) ...
- SpringMVC简单项目配置
一.首先,SpringMVC框架使用分层开发,分层是为了实现“高内聚,低耦合”.采用“分而治之”的思想,把问题划分开来各个解决,易于控制,延展和分配资源,最重要的是有利于后期项目维护.MVC是指Mod ...
- SpringMVC 常用applicationContext.xml、web.xml、servlet-mvc.xml简单配置
在进行学习配置文件之前,为了加深对框架的认识,简单的做了SSM框架的简单实验.然后画出listAll查询方法的整个过程的思维导图. 整个过程中的web.xml.SpringMVC.xml.applic ...
- centos6和centos7的区别和常用的简单配置优化
- 本节主要介绍centos6和centos7的区别和常用的简单配置优化:- 第一部分: - 1.对比文件系统 - 2.对比防火墙,内核版本,默认数据库 - 3.对比时间同步,修改时区,修改语言 - ...
- SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)的区别
SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,M ...
- SpringMVC简单使用教程
一.SpringMVC简单入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...
随机推荐
- 关于java多线程任务执行时共享资源加锁的方式思考
1.加锁方式: 1-1.使用synchronized关键字进行方法或代码块的加锁方式 1-2.使用ReentrantLock类提供的lock()方法的方式 2.代码实现(传统的银行取款存款问题): 2 ...
- python的入门1(补发)
一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
- spring tx:advice事务配置
http://blog.csdn.net/bao19901210/article/details/17226439 http://blog.csdn.net/rong_wz/article/detai ...
- 爬虫(正则)——爬neihan8
工具:python3 步骤: 1)定义spider类,将具体功能封装成方法 2)观察html页面,写好正确的正则表达式来找到符合规则的文字 3)写一个方法测试一下,保证每写好一个都是对的 4)加入提示 ...
- Auto yes to the License Agreement on sudo apt-get -y install oracle-java7-installer
参考一 参考二 我自己的做法是: && add-apt-repository ppa:webupd8team/java \ && apt-get update \ &a ...
- java join 方法的使用
在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束.这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据 ...
- PHP开发环境及搭建
自学PHP中,很多东西都不熟悉,在此做个记录,方便以后再次搭建PHP环境.这篇文章基本按照原文 ThinkPHP5开发环境安装和配置 ,在此感谢该作者 一.实验目的 1.掌握ThinkPHP5(简称 ...
- Sql server 查询指定时间区间工作日数、休息日数等日期操作
1.查询指定时间区间的工作日 这个主要难点是法定节假日,国家的法定节假日每年都不一样,还涉及到调休,所以我们设计一个假日表.主要字段有年份,类型(是否调休),假期日期.如下: CREATE TABLE ...
- 右侧导航栏(动态添加数据到list)
页面样式 <style> .scroll { position: fixed; right: 5%; top: 5em; background: #ccc; display: none; ...
- 使用PM2搭建在线vue.js开发环境(以守护进程方式热启动)
项目以vue.js+layUI的作为前端开发技术栈,需要有一个在线的环境供项目成员实时查看效果,总不能每次都webpack打包发布后才能看到效果吧!刚开始就简单使用npm run dev命令热启动,但 ...