读书人

一口一结巴掉Struts(一)用JSP+S

发布时间: 2013-03-21 10:08:17 作者: rapoo

一口一口吃掉Struts(一)——用JSP+Servlet演示Struts的基本原理

struts是开源项目。它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web应用的MVC的应用框架。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。

MVC即Model-View-Controller的缩写,是一种常用的设计模式(具体自己百度吧)

我们用JSP+Servlet实现“一个应用的增改信息”,先来看一下,如果没有Struts,我们一般都是怎么做的。

废话少说,果断上代码

一口一结巴掉Struts(一)——用JSP+Servlet演示Struts的基本原理

V层

用JSP实现

<body><a href="Servlet/Add.action">测试增加》》》》》》》》》》</a><a href="Servlet/Modify.action">测试修改》》》》》》》》》》</a></body>


C层

前端控制器Servlet

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.getRequestURI();String flagAction = requestURI.substring(requestURI.indexOf("/", 1), requestURI.indexOf("."));IAction action =null;//根据字符串转发相应的Actionif("/Servlet/Add".equals(flagAction)){//TODO 采用读取配置文件,反射,这里省略,就直接NEW了action=new AddAction(); }else if("/Servlet/Modify".equals(flagAction)){action =new ModifyAction();}//TODO 获取表单信息//TODO 将字符串转换为我们需要的格式等等,向下传递//得到转向信息String forwordString=action.Excute();//转发request.getRequestDispatcher(forwordString).forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request,response);}}

配置文件

<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>


Actoin接口和实现Action接口的增和改

package Control;public interface IAction {public String Excute();}


package Control;import Model.Manage;public class AddAction implements IAction {public String Excute() {//执行MODEL层逻辑Manage manage=new Manage();manage.Add();//返回转向信息// TODO 可以在配置文件中读return "/AddSuccess.jsp";}}


package Control;import Model.Manage;public class ModifyAction implements IAction {public String Excute() {//执行MODEL层逻辑Manage manage=new Manage();manage.Modify();//返回转向信息//TODO 可以在配置文件中读return "/ModifySuccess.jsp";}}


M层

实现业务逻辑

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实现地基本原理。

一口一结巴掉Struts(一)——用JSP+Servlet演示Struts的基本原理

这篇先说这么多,下篇继续


读书人网 >JavaScript

热点推荐