注册本站  论坛  繁體中文

慧民电脑芯片级维修-电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> J2EE >> Jsp >> Java正文

JSP Web框架研究:Struts

文章来源:中国IT实验室整理 作者:佚名 更新时间:2008-9-21 17:06:21 【 】 【加入收藏

    在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构架的运行过程:

 

    看到上面的序列图,如果让我们从头来写代码,来实现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来作为响应页面:

<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,所有的文件编好之后,下面就是配置和运行了。

  • 上一篇Java:

  • 下一篇Java:
  • 最 新 热 门
     面向Java开发人员的Scala指南: 包和访问修饰…
     J2SE 路径问题综合分析
     深入Java调试体系: 第1部分,JPDA体系概览
     Apusic上用JavaMail发邮件
     Java开源协议小全
     java 实现压缩与解压缩ZIP
     利用Ruby简化你的Java测试
     开源Erlang真的能成为下一代Java语言吗
     Java SE 6 新特性: XML API与Web服务
     Java SE 6 新特性: 对脚本语言的支持
    最 新 推 荐
     JSTL中fn表达式的使用说明
     JSP Web框架研究:Struts
     JSF在GlassFish管理控制台中的应用
     介绍JSP程序动态网站环境搭建的详细步骤
     Jsp页面中文参数传递get和post方法分析
     Java\.net\PHP比较 程序员眼中的.Net世界
     JavaScript最常用的55个经典技巧
     Windows操作系统下JSP程序开发环境配置
     JSF点滴积累--权限验证
     小小分页帮助程序
    相 关 文 章

    spring 核心包介绍
    Spring MVC中的新特性
    Spring AOP 用annotation 来实现
    Spring操作Hibernate更方便
    Spring Security 2资源-角色查找源码研究及…
    Spring3.0新特征-Restful support MVC
    Spring Autowire(自动装载)的一次实践
    Spring Security学习总结二
    Spring Security学习总结一
    Struts2_Spring 整合

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    门市地址:广东省佛山市南海区黄岐黄海路133号
    本网站所有内容未经许可不得转载或做其他使用