`
jbm3072
  • 浏览: 211278 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSP Web框架研究:Struts

阅读更多

在JSP 的各种Web框架中,据我看来Struts框架最为简单。下面从Struts框架开始来研究JSP的web框架。

1、MVC

在研究这个框架之前,先要对MVC模式有所了解。幸好以前学习过设计模式,对MVC编程和模式了解一些,即将模型、视图、控制器分开。使三者可以各负其责,处理自己的逻辑。

2、Struts框架的介绍:

Struts框架也采用了MVC结构:

Model:在Struts框架中,Model模型的实现是JavaBean。在Struts框架中,通过使用JavaBean完成信息的存储。

Control:控制器即Java Servlet,由框架提供,负责视图和模型之间的交互。控制器的每个入口都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的Java类

以进行相应的处理,控制器还指定下一个视图的位置。

View:视图,当然使用JSP了。

是不是很简单啊。

下面的序列图反映了一个简单的Strut构架的运行过程:

 

image (点击看大图)

看到上面的序列图,如果让我们从头来写代码,来实现Struts构架,这样也太累了。Struts构架给我们提供了不少类,如果ActionServlet、Action、ActionForm等。通过继承使用他们和使用框架,我们只需写几个继承类,就可以写出基于这个框架的代码了。这就是框架的好处,他把一些细节给我们屏蔽了,我们只要实现了关键部分。OK,就可以了。结构又好,又方便。这就是框架的好处。

通过上面的说明,或许你对框架会有些了解。框架,简单的理解,就是我们小学时做的填空题,我们把重要的空填一下。就可以了。显然,上面的描述不是很准确,但用来简单的理解框架还是可以的。

下面需要用一个实例来说明如何使用struts框架了。

我们用Struts实现一个简单的注册信息页面。

需要注册的信息只由用户名和密码。下面是具体的实现。

首先定义一个User类:

   1: public class User {
   2:     private String userName;
   3:     private String password;
   4:  
   5:     public String getPassword() {
   6:         return password;
   7:     }
   8:  
   9:     public void setPassword(String password) {
  10:         this.password = password;
  11:     }
  12:  
  13:     public String getUserName() {
  14:         return userName;
  15:     }
  16:  
  17:     public void setUserName(String userName) {
  18:         this.userName = userName;
  19:     }
  20:     
  21: }
 
User类定义了用户的信息描述。下面的UserForm继承了AcitonForm类,用于验证请求信息并对表单信息进行检查。
 
public class UserForm extends ActionForm {
    private User user;
 
    public User getUser() {
        return user;
    }
 
    public void setUser(User user) {
        this.user = user;
    }
 
 
 
    public String getUserName() {
        return user.getUserName();
    }
 
    public String getPassword() {
        return user.getPassword();
    }
 
    @Override
    public void reset(ActionMapping a, HttpServletRequest r) {
       this.user = new User(); 
    }
 
    @Override
    public ActionErrors validate(ActionMapping a, HttpServletRequest r) {
       ActionErrors errors = new ActionErrors();
       if(user.getUserName()==null||(user.getPassword()==null)){
           errors.add("请填写用户名和密码!",new ActionMessage("error.user.password"));
           
       }
       return errors;
    }
    
}
 
UserAction类:继承了Action,用来相应请求。看看execute函数就知道请求相关的参数包括映射(ActionMapping)、请求表单(ActionForm)、servlet请求(HttpServletRequest)和响应(HttpServletResponse)。那么就很容易的写出处理请求的函数。
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
 
/**
 *
 * @author WangJing
 */
public class UserAction extends Action {
 
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm arg1, HttpServletRequest request, HttpServletResponse arg3) throws Exception {
        UserForm userForm = new UserForm();
        try{
            UserBean bean = new UserBean();
            bean.addUser(userForm.getUser());
        }catch(Exception e){
            e.printStackTrace();
        }
        request.setAttribute("user",userForm.getUser());
        return (mapping.findForward("userCreated"));
    }
    
}
UserBean:它实现了具体的业务逻辑,她被Action调用。完成数据的存储。
class UserBean {

    void addUser(User user) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
    
    private Connection conn;

    public UserBean() {
        this.conn = DatabaseConn.getConnection();
    }
    public void addUser(User user){
        Statement s = (Statement) conn.createStatement();
        s.executeUpdate("insert into User values("+user.getUserName()+","+user.getPassword()+");");
    }
}
上面的代码进行了数据的存储处理。需要注意的是代码中的DatabaseConn.getConnection()是没有的。需要自己实现的。具体的实现可以参考本人的博客中关于连接数据库的一篇文章。
好了,下面就是最重要的显示JSP文件代码的编写了:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib  uri="/struts-logic" prefix="logic" %>
<%@ taglib  uri="/struts-bean" prefix="bean" %>
<%@ taglib  uri="/struts-html" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <html:form aciton="createUser.do" method="GET">
            userName:<html:text property="user.userName"/>
            password:<html:text property="user.password"/>
            <html:submit property="submit"/>
        </html:form>
    </body>
</html>
 
下面用viewUser.jsp来作为响应页面:
 
<style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%
        User user= (User)request.getAttribute("User");
        
        %>
        已经创建了用户:
        name:<%=user.getUserName()%>
        password:<%=user.getPassword()%>
        
    </body>
</html>

ok,所有的文件编好之后,下面就是配置和运行了。(累了,配置运行休息一会在弄吧。待续中。。。呵呵。。。。) <style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } </style>

分享到:
评论

相关推荐

    struts2核心文件

    Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它在Web应用开发中被广泛使用。Struts2的核心在于提供一个强大的、灵活的、可扩展的架构,使得开发者能够更方便地实现业务逻辑与表现层...

    jspweb框架

    **JSPWeb框架详解** JSP(JavaServer Pages)是一种基于Java的技术,用于创建动态网页。它允许开发者在HTML页面中嵌入Java代码,从而实现服务器端的数据处理和逻辑控制。JSPWeb框架是为了简化JSP开发过程而设计的,...

    三大框架:struts、spring、Hibernate构建的示例代码

    Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,主要用于控制应用程序的流程。它通过Action类处理用户的请求,将数据传递给模型,并更新视图。Struts提供了一系列的标签库,如`&lt;s:form&gt;`、`...

    零基础学Java.Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).

    3. **Struts框架**: Struts是基于MVC(Model-View-Controller)设计模式的Java Web框架。它提供了一种组织应用结构的方法,将表现层、业务逻辑层和数据访问层分离,使得代码更易于维护和扩展。Struts通过Action类...

    0积分:Struts In Action中文版.rar

    《Struts In Action》是一本深入探讨Struts框架的专著,中文版的发布使得国内开发者能够更加方便地学习和理解这一经典的Java Web开发框架。Struts是Apache软件基金会下的一个开源项目,它为构建基于MVC(Model-View-...

    jsp精品课网站(struts2技术)

    Struts2是Java Web开发中的一款流行开源框架,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用程序的开发过程。本课程将深入探讨Struts2的核心概念、特性以及在构建JSP精品课网站中的应用。 **一...

    java Struts 1.x 框架 Web 开发

    Struts 1.x 是一个基于 Model-View-Controller (MVC) 设计模式的 Java Web 开发框架,由 Apache 软件基金会开发并维护。它在20世纪末到21世纪初广泛应用于企业级Web应用开发,因其强大的功能和良好的社区支持而受到...

    Struts+jsp Java Web开发

    在本项目中,开发者利用Eclipse作为集成开发环境,MySQL作为数据库存储,Struts2作为MVC框架,以及jsp(JavaServer Pages)作为视图层来实现一个完整的Web应用。以下将详细解释这些技术及其在项目中的作用。 1. **...

    struts2+JSP

    Struts2和JSP是两种在Java Web开发中广泛使用的技术。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,它主要用于构建和维护可扩展的、易于测试的Web应用程序。而JSP(JavaServer Pages)是一种...

    tm_blog管理系统.rar_ struts _blog_jsp struts_jsp网站_struts

    Struts 是一款经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)设计模式的应用程序开发。在给定的"tm_blog管理系统"中,我们可以看到它利用了Struts框架来构建一个博客...

    源码:struts-kisso375-demo.rar

    Struts和Kisso是两个在Java Web开发中常见的开源框架。Struts是一个基于MVC(Model-View-Controller)...通过研究和实践这个示例,你可以学习到如何在Java Web环境中进行安全框架的集成,提升应用的安全性和可维护性。

    Struts框架应用于jsp中

    Struts框架是Java Web开发中的一个关键组件,它在JSP(JavaServer Pages)基础上提供了一种更规范、更易维护的MVC(Model-View-Controller)架构。标题"Struts框架应用于jsp中"表明我们将探讨如何在JSP应用程序中...

    Java Web整合开发实战:基于Struts 2+Hibernate+Spring(PDF)

    2篇 表现层框架Struts技术 4章 Struts快速上手 5章 解密Struts之核心文件 6章 Struts之数据校验与GJ化 7章 详解Struts之标签库 8章 Struts之拦截器使用技巧 9章 在Struts中应用Ajax技术 10章 Struts之项目实战...

    零基础学Java_Web开发:JSP+Servlet+Struts+Spring+Hibernate+Ajax

    本资料集合了"零基础学Java_Web开发:JSP+Servlet+Struts+Spring+Hibernate+Ajax",涵盖了从初级到进阶的重要概念,帮助初学者系统地掌握Web开发技能。 1. **JSP(JavaServer Pages)技术**: JSP是Java平台上的...

    Struts2框架程序示例

    Struts2框架是Java Web开发中的一个重要组成部分,它是一个基于MVC(Model-View-Controller)设计模式的开源框架,旨在简化企业级应用的开发。本示例将深入讲解Struts2框架的核心概念、主要特性以及如何在实际项目中...

    struts框架开发

    Struts框架是Java Web开发中的一款经典MVC(Model-View-Controller)框架,由Apache软件基金会维护。它为开发者提供了一种结构化的、可扩展的方式来构建动态网站应用,简化了开发过程,使得代码更加组织有序。Struts...

    java图书管理系统struts+jsp+mysql学生借阅归还项目源码含文档报告.zip

    java图书管理系统struts+jsp+mysql学生借阅归还web项目源码文档,本项目都是亲自运行测过的的,功能正常运行 一、功能介绍: 此项目为struts+javabean+jsp+mysql制作的javaweb图书管理系项目,数据库使用mysql5。 ...

    两种Java Web通用开发框架的比较研究.pdf

    Struts 2 框架还提供了一个统一的 Web 应用程序开发模型,支持多种视图技术,如 JSP、Velocity 和 FreeMarker 等。 Struts 2 框架的优点还包括: * 更好的性能:Struts 2 框架的性能比 Struts 1 框架有所提高,这...

    Struts开发框架简介

    Struts开发框架是一款基于MVC(Model-View-Controller)设计模式的开源Java Web应用程序框架,由Apache软件基金会维护。它的出现旨在解决JSP页面和Servlet在处理动态Web内容时的混乱情况,提供一个结构化的解决方案...

    精通Struts:基于MVC的JavaWeb设计与开发(孙卫琴)

    Struts是一个开源的Java Web框架,它遵循Model-View-Controller(模型-视图-控制器)模式,旨在简化Java Servlet和JSP的开发工作。在Struts框架中,模型负责业务逻辑,视图负责用户界面展示,而控制器则协调这两者...

Global site tag (gtag.js) - Google Analytics