JSP+Servlet演示Struts的基本原理

本文转载自:http://blog.csdn.net/shan9liang/article/details/8686333 shan9liang

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

我们用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;  

        //根据字符串转发相应的Action
        if("/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);
    }  

}  

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> 

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

时间: 2024-11-06 17:57:58

JSP+Servlet演示Struts的基本原理的相关文章

Without SSH/JSP/Servlet,不走寻常路,Java可以更酷

不过此文并不是用来批判SSH(Struts.Spring.Hibernate)/JSP/Servlet的, 也不是为某品牌做广告,而是用来分享这将近一年来的研究心得. 去年圣诞节时曾在JavaEye发过一两篇文章,不过现在找不到了, 文章内容提到要在3个月左右的时间内设计出一个有别于SSH的新型MVC框架, 设计的起点最初是以JSP/Servlet为基础的,虽然在两个多月后有了个雏形, 但是跟Rails这样的框架相比还是没有明显的优势, 比如在不使用反射的情况下, 很难将不同的uri对应到Ser

jsp servlet的区别和联系

简单的说,SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便. 后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改.新型的网络语言如ASP,PHP,JSP都是镶嵌型的SCRIPT语言. JSP在本质上就是SERVLET,但是两者的创建方式不一样. Servlet完全是JAVA程序代码构成,擅长于流程控制和事务

基于jsp+servlet图书管理系统之后台用户信息删除操作

上一篇的博客写的是修改操作,且附有源码和数据库,这篇博客写的是删除操作,附有从头至尾写的代码(详细的注释)和数据库! 此次删除操作的源码和数据库:http://download.csdn.net/detail/biexiansheng/9732955 自此,基于jsp+servlet开发的用户信息增删该查已经全部写完了,上面的链接是全部的代码,包含增删该查和数据库. 注意点: 1:删除操作使用的是伪删除.即只是不在页面显示了,但是还保存在数据库. 2:分页查询使用的是一个小工具,后面有时间把这些

【Hibernate学习笔记】第二章节:JSP/Servlet及相关技术详解

JSP(Java Servr Page)和Servlet是Java EE规范的两个基本成员,他们是Java Web开发的重点知识,也是Java EE开发的基础知识.JSP和Servlet的本质是一样的,因此JSP最终必须编译成Servlet才能运行,或者说JSP只是生成Servlet的"草稿"文件.JSP的特点是在HTML页面中嵌入了Java代码片段,从而可以动态的提供页面内容. 1.Web应用和web.xml文件 JSP.Servlet.Listener和Filter等都必须运行在W

HTML,CSS,JavaScript,AJAX,JSP,Servlet,JDBC,Structs,Spring,Hibernate,Xml等概念

HTML: 即Hyper Text Markup Language,超文本标记语言. CSS: 层叠样式表,网页表现与内容分离的样式设计语言,相比于传统的HTML的表现而言,CSS能够对网页中对象的布局.字体.颜色等方面进行设置,并能够进行初步的交互设计. JavaScript: 基于浏览器端运行的脚本语言,无须服务器端支持,它是一种基于事件运行的编程语言,JavaScript编写的程序既可以内嵌在HTML代码中,也可以独立地以".js"格式的文件存在.JavaScript代码可以提高

JSP+Servlet中使用jspsmartupload.jar进行图片上传下载

JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post" enctype="multipart/form-data"> <input type="file" name="myfile"> <input type="text" name="cmt&q

JSP/Servlet Web应用中.properties文件的放置与读取

本地项目在本地类库中,我经常使用当前目录来放置.properties文件,这时调用方只要引用我的jar,并且将我的.properties放在他的classpath里面即可,比如:p.load(new FileInputStream("HanLP.properties"));这样类似下图的项目结构就可以跑起来:JSP/Servlet Web项目但是到了Web项目时,情况大不相同.在Tomcat下,classpath里只含apache-tomcat-8.0.14\bin目录下有限的...

JSP/Servlet 工作原理

JSP/Servlet 工作原理(转载) 2014-03-08 23:20 1829人阅读 评论(0) 收藏 举报 Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器. Servlet 运行在 Servlet 容器中,并由容器管理从创建到销毁的整个过程. 对于用户到达Servlet的请求,Servlet容器会创建特定于这个请求的ServletRequest对象和 ServletResponse对象

最简单的jsp+servlet的增删改查代码

package ceet.ac.cn.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import ceet.ac.cn.model.Admin; public class AdminDao {