浅谈Struts2(一)
一、Struts2引言
1、Struts2框架的概念
解决的MVC开发过程中,控制器(Controller)的通用问题。
a、什么是MVC开发
MVC开发是一种编程思想,由设计者人为的把一个项目,划分为三个层次:M(Module模型层)V(View视图层)C(Controller控制层)。
b、javaEE编程体系中MVC编程思想的实现
(1)V(View视图层)------jsp、html
(2)C(Controller控制层)------Servlet
(3)M(Module模型层)------javaBean(Service+DAO+Entity)
模型是对客观世界的一直模拟。
c、MVC的好处
(1)便于多个程序员协同开发,提高开发效率。
(2)解耦和、利于代码维护。
d、Servlet作为控制器存在许多问题
(1)收集数据的代码冗余、需要手工处理中文字符集、手工进行类型转换。
(2)路径跳转,硬编码在了Servlet中,不利于后续的修改维护。
2、一个最简单的Struts2程序
a、环境搭建
将Straut2的相关jar包导入lib文件夹中,将struts.xml放置在跟src根目录下。
web.xml中配置struts2的核心过滤器:
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
b、编码
implements Action接口,实现execute()方法:
public class FirstAction implements Action{ public String execute()throws Exception{ System.out.println("---this is first action---"); //跳转页面的路径 return "success"; } }
配置struts.xml
<struts> <package name="action1" extentd="struts-default"> <action name="first" class="com.liquidxu.struts2.FirstAction"> <result name="success">/admin/index.jsp</result> </action> </package> </struts>
FirstAction类中execute()方法的返回值"success"跟配置文件中的result name是保持一致的,<result>节点中的内容/admin/index.jsp才是真正跳转的路径。将跳转路径从代码中转移到配置文件中,利于代码的维护。
ps、大家会发现execute()方法中是没有request跟response的,这时我们就要介绍一下Struts2的一个重要的工具类ServletActionContext。该工具类必然是静态的,可以在直接拿来使用:HttpServletRequest reqeust = ServletActionContext.getRequest();HttpServletResponse respones = ServletActionContext.getResponse();当我们拿到request对象的时候,自然可以通过request对象获得session跟ServletContext。
ps、Sevlet创建:一个Servlet类型只会创建一个实例。
Action创建:一个Action类型,在每次一请求,都会创建一个Action对象。
浅谈Struts2(一)的更多相关文章
- 浅谈struts2之chain
转自:http://blog.csdn.net/randomnet/article/details/8656759 前一段时间,有关chain的机制着实困绕了许久.尽管网上有许多关于chain的解说, ...
- 浅谈Struts2
学过SSH框架很长一段时间了,一直没有很系统的总结一下,这里先简单谈谈Struts2. 为什么要用Struts2? 这里列举一些Servlet的缺点: 1.每写一个servlet在web.xml中都要 ...
- 浅谈 Struts2 面试题收藏
Struts2面试题 一.工作原理 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Fi ...
- 浅谈Struts2拦截器的原理与实现
拦截器与过滤器 拦截器是对调用的Action起作用,它提供了一种机制可以使开发者定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了 ...
- [SSH 2] 以网站主页面浅谈Struts2配置
导读:前面总体的介绍了一下SSH框架,那么作为Struts这一支,具体是怎么配置的呢?本篇博客则主要是以自己做过的实例中的登录一条线,简单介绍一下struts2的配置,如有不妥之处,还请大家多提点提点 ...
- 小学生之浅谈Struts2与struts1的运行机制
Struts1工作原理图: 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(s ...
- 浅谈Struts2(四)
一.Struts2的拦截器(Intercept) 作用:把多个Action中的共有代码,提取至拦截器,从而减少Action中的冗余代码. 1.Action拦截器 a.编写interceptor类 pu ...
- 浅谈Struts2(三)
一.Struts2收集client的参数 核心思路: <form method="post" action="XXXX"> <input ty ...
- 浅谈Struts2(二)
一.struts2的跳转 1.action跳转JSP a.默认为forward <action name="action1" class="com.liquidxu ...
随机推荐
- LBYL与EAFP两种防御性编程风格
检查数据可以让程序更健壮,用术语来说就是防御性编程. 检查数据的时候,有这样的两种不同的风格. LBYL:Look Before You Leap EAFP:It's Easier to Ask ...
- 布线问题(prime)
布线问题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件:1.把所有 ...
- 翻转View
翻转View by 伍雪颖 CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil cont ...
- VBA 开发学习--基础语法
MsgBox "开始学习VBA" '提示框 Dim str As String '声明str变量是string类型 Let str = "一起来看流星雨" '给 ...
- FilenameUtils工具类
转载请出自出处:http://eksliang.iteye.com/blog/2217081 一.概述 这是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的 ...
- BOW
bag of words(NLP): 最初的Bag of words,也叫做"词袋",在信息检索中,Bag of words model假定对于一个文本,忽略其词序和语法,句法,将 ...
- Ubuntu切换至root用户
第一种方式: 使用命令 sudo passwd root 设置root用户的密码 然后su root即可切换至root用户 第二种方式: sudo bash
- ORA-03113: 通信通道的文件结尾 进程 ID: 764 会话 ID: 125 序列号: 5
昨天因为导入很久数据,最后一看是因为数据文件不够,后来就关机了.现在,开启数据库,总是报“ORA-03113: 通信通道的文件结尾” SQL> conn /as sysdba; 已连接到空闲例程 ...
- java 乱码详解_jsp中pageEncoding、charset=UTF -8"、request.setCharacterEncoding("UTF-8")
http://blog.csdn.net/qinysong/article/details/1179480 java 乱码详解__jsp中pageEncoding.charset=UTF -8&quo ...
- vs2013 中HTML页 无法在设计窗口中查看的解决
VS2013不支持HTML文件的解决办法: 1.将html文件重命名为aspx即可.不需要创建项目,直接拖进vs即可. 2.打开VS菜单->工具->选项->文本编辑器->文件扩 ...