Struts框架——(一)用Servlet + JSP演示Struts基本原理
一. 用Servlet + JSP演示Struts基本原理
struts是开源项目。它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web应用的MVC的应用框架。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。
如果没有Struts,我们怎么实现的?
1)View层——JSP
<body>
<a href="Servlet/Add.action">测试增加》》》》》》》》》》</a>
<a href="Servlet/Modify.action">测试修改》》》》》》》》》》</a>
</body>
2)control层 —— 前端控制器Servlet + 对应的action操作
package Control import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Controller extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
// 截取字符串
String requestURI = request.getRequsetURI();
String flagAction = requestURI.substring(requestURI.indexOf("/", 1), requestURI.indexOf(".")); IAction action = null; //根据字符串转发相应的Action
if ("/Servlet/Add".equals(flagAction)){
// TODO 采用读取配置文件,反射,这里省略,直接new
action = new AddAction();
}
else if ("Servlet/Modify".equals(flagAction)){
action = new ModifyAction();
}
//TODO 获取表单信息
//TODO 将字符串转换为我们需要的格式等等,向下传递 //得到转向信息(转向对应的JSP)
String fowardString = action.Excute(); //转发
request.getRequestDispatcher(fowardString).forward(request,response);
} protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
doGet(request,response);
}
}
其中:需要在web.xml中修改配置文件:
<servlet>
<servlet-name>Controller</servlet-name>
<servlet-class>Control.Controller</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>Controller</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
AddAction和ModifyAction实现IAction接口,
IAction:
package Control; public interface IAction {
public String Excute();
}
AddAction
package Control; import Model.Manage; public class AddAction implements IAction { public String Excute() {
//执行MODEL层逻辑
Manage manage=new Manage();
manage.Add(); //返回转向信息
// TODO 可以在配置文件中读
return "/AddSuccess.jsp";
}
}
ModifyAction
package Control; import Model.Manage; public class ModifyAction implements IAction { public String Excute() {
//执行MODEL层逻辑
Manage manage=new Manage();
manage.Modify(); //返回转向信息
//TODO 可以在配置文件中读
return "/ModifySuccess.jsp";
} }
3)model层——业务逻辑层
package Model; public class Manage {
public void Add()
{
System.out.println("添加》》》》");
} public void Modify()
{
System.out.println("更改》》》》");
}
}
那么我们会遇到什么样的问题呢?
1、实例化响应的Action,我们要么用if语句,手动创建,要么需要自己读配置文件,获取Action,反射实例化
2、表单过来的所有数据都是字符串,我们需要手动转成响应的格式
3、转向信息,我们可能会写死,也可能手动去配置文件读
4、……
我们需要手动做很多事,而且很多重复劳动,还容易出错。
如果有个东西能为我代劳就简单得多了,所以Struts应运而生,Struts把我们上面提到的那些都做了封装,让我们的开发更高效,更有灵活性。上面的代码,用时序图表示如下,我们完全可以看做是Struts实现地基本原理。
上面的代码用时序图可以这样表示:
更多详情:http://blog.csdn.net/shan9liang/article/details/8686333
Struts框架——(一)用Servlet + JSP演示Struts基本原理的更多相关文章
- Eclipse搭建Struts框架,及一个简单的Struts例子
一.下载struts2.0.1 http://struts.apache.org/downloads.html,下载struts-2.0.1-all.zip,这个压缩包中包含了开发struts2所需的 ...
- Struts框架详解
1.Struts应用框架介绍 (1)框架 框架最简单的形式是指已开发过并已测试过的软件的程序块,这些程序块可以在多个软件开发工程中重用.框架提供了一个概括的体系结构模版,可以用这个模板来构建特定领域中 ...
- java:struts框架2(方法的动态和静态调用,获取Servlet API三种方式(推荐IOC(控制反转)),拦截器,静态代理和动态代理(Spring AOP))
1.方法的静态和动态调用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...
- Struts 2相关配置与基本操作演示(案例Demo)
基本介绍 Struts 2 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2 ...
- Struts框架的核心业务
Struts的核心业务 Struts核心业务有很多,这里主要介绍了比较简单一些的: 请求数据的处理,和数据自动封装,类型自动转换 1.Struts中数据处理 1.1.方式1:直接过去servletap ...
- 使用Struts框架,实现用户登陆功能
前言:本篇文章是本人这周学习的一个小结,在自我总结的同时,希望也能够给其他同学带来一点帮助.本文主要知识是参照书本上的知识点以及网上其他博客文章,在上机操练后的所得,具体源码主要来自http://bl ...
- Struts框架 内部资料 请勿转载 谢谢合作
Struts框架 struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发. 本章详细讨论struts架构.我们将看到struts是如何清晰地区分控制,事务逻 ...
- Eclipse/JavaWeb (一)三大框架之struts框架 持续更新中...
最近主要把javaweb的三大框架过一遍. (一)发展历史 传统的Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使得程序分为几层,有 ...
- Struts框架——(三)动态ActionForm
一.DynaActionForm的引入意义 使用ActionForm把表单数据单独封装起来,而且提供了自动的数据验证,简化了代码的编写,给我们带来了极大的方便. 但是,ActionForm也存在一些明 ...
随机推荐
- system verilog中的跳转操作
在verilog中,使用disable声明来从执行流程中的某一点跳转到另一点.特别地,disable声明使执行流程跳转到标注名字的声明组末尾,或者一个任务的末尾. verilog中的disable命令 ...
- delphi.数据结构.链表
链表作为一种基础的数据结构,用途甚广,估计大家都用过.链表有几种,常用的是:单链表及双链表,还有N链表,本文着重单/双链表,至于N链表...不经常用,没法说出一二三来. 在D里面,可能会用Contnr ...
- RestoreDirectory 引起的BUG
IIRC, in windows XP when you press Save on a SaveFileDialog (or Open on a OpenFileDialog) the direct ...
- 《疯狂Java讲义》(三) ---- JDK&JRE&JVM&CLASSPATH
JDK: Java SE Development Kit, Java标准版开发包.包括Java编译器,JRE,以及常用的Java类库等. JRE: Java Runtime Environment,运 ...
- listview 的适配器 getview 随着软件健盘显示和隐藏,出现多个空的position问题
AndroidManifest 里配置 android:windowSoftInputMode="stateHidden|adjustPan" listview的宽高设置成fill ...
- ios 自定义键盘
由于项目需要,需要自定义键盘.ios系统键盘会缓存键盘输入,并保存在系统目录下的文件里,并且是明文存储,存在帐号密码泄漏风险.在别人代码基础上修改了下,美化了下界面,去掉了字符输入,加了点击特效,截图 ...
- float、double的有效位数
Java中的浮点类型有两类,分别是float和double类型,其中float取_7__位有效数据,double取_15__位有效数据
- Python自动化 【第十四篇】:HTML介绍
本节内容: Html 概述 HTML文档 常用标签 2. CSS 概述 CSS选择器 CSS常用属性 1.HTML 1.1概述 HTML是英文Hyper Text Mark-up Language(超 ...
- TStringHelper的相关知识、Helper相关细节
- 锋利的js之验证身份证号
我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构 公民 ...