浅谈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 ...
随机推荐
- substr,substring,slice 的区别
javascript中的三个函数substr,substring,slice都可以用来提取字符串的某一部分(函数名称都是小写,不要写成subStr,subString又或者Substring,记住js ...
- IOS开发之xcode 快捷键
IOS开发也有一年多了,发现Xcode快捷键,还不熟,恶补一下.要不然真影响工作效率,呵呵! 1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 C ...
- iOS 处理方法中的可变參数
## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...
- Kali linux安装漏洞扫描工具Nessus指南
引子:Nessus是著名信息安全服务公司tenable推出的一款漏洞扫描与分析软件,号称是"世界上最流行的漏洞扫描程序,全世界超过75,000个组织在使用它".虽然这个扫描程序能够 ...
- Cocos2d-x 3.1.1 学习日志6--30分钟了解C++11新特性
新的keyword auto C++11中引入auto第一种作用是为了自己主动类型推导 auto的自己主动类型推导,用于从初始化表达式中判断出变量的数据类型.通过auto的自己主动类型推导.能够大大简 ...
- 获取第下一个兄弟元素 屏蔽浏览器的差异(nextElementsibling)
//获取element下一个兄弟元素 function getNextElementSibling(element){ //能力检测 判断是否支持nextElementSibling if(eleme ...
- HTML系列(八):表格
一.基本表格: 表格标记<table>,行标记<tr>,单元格标记<td> 基本语法: <table> <tr> <td>单元格 ...
- 框架计划随笔 三.EntityFramework在传统事务脚本模式下的使用
某个朋友问为什么不推首页或者允许评论,我说一直没怎么写博客,也习惯了先随便乱画再开始写文档,担心公开后一些不经意的"呓语“中得出的错误的结论会给别人错误的观点,所以这个系列只是当做熟悉写博客 ...
- 转载:JS触发服务器控件的单击事件
原文地址:http://blog.csdn.net/joyhen/article/details/8485321 <script src="../Js/jquery-1.4.2.min ...
- Matlab中K-means聚类算法的使用(K-均值聚类)
K-means聚类算法采用的是将N*P的矩阵X划分为K个类,使得类内对象之间的距离最大,而类之间的距离最小. 使用方法:Idx=Kmeans(X,K)[Idx,C]=Kmeans(X,K) [Idx, ...