服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

struts入门--从原理到安装及实例讲解


  1. struts的起源
  struts是作为apache jakarta项目的组成部分。该项目的目标是为建立java web 应用程序而提供的一个开源框架,目前大家一般使用的版本为1.1,但也出现了1.2。通过使用struts 框架可以改进和提高java server pages (jsps)、servlet、标签库以及面向对象的技术在web应用程序中的应用。应用struts框架可以减少你应用mvc(model- view -controller)设计模式的开发时间,从而提高开发效率。把struts应用于j2ee客户端,应该是一个不错的选择。
  
  2. struts的工作原理
  谈到struts,我们就不得不提到mvc设计模式。mvc即model-view-controller的缩写,它是web应用当中的常用的设计模式。mvc 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
  struts是mvc的一种实现,它很好的结合了jsp,java servlet,java bean ,taglib等技术。那么我们来看看struts框架的工作原理:
  控制:在struts中,actionservlet起着一个控制器(controller)的作用。actionservlet是一个通用的控制组件。这个控制组件提供了处理所有发送到struts的http请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是action类的子类)。另外控制组件也负责用相应的请求参数填充 action form(通常称之为frombean),并传给动作类(通常称之为actionbean)。动作类实现核心商业逻辑,它可以访问java bean 或调用ejb。所有这些控制逻辑利用struts-config.xml文件来配置。
  视图:主要是由jsp来控制页面输出的。它接收到action form中的数据,利用html,taglib,bean,logic等显示数据。
  模型:在struts中,主要存在三种bean,分别是:action,actionform,ejb或者java bean。actionform用来封装客户请求信息,action取得actionform中的数据,再由ejb或者java bean进行处理。
  
  3 struts 优点与缺点
  优点:1.利用struts提供的taglib可以大大节约开发时间。2. 表现与逻辑分离。 3.维护扩展比较方便。 4 便于团队开发
  缺点:大量的使用标签,对于初学者难度较大。
  
  4. struts 1.1 安装
  安装struts 1.1 比较简单。假设我们使用的是tomcat 5.0,并且安装在d:/tomcat下。首先,请到http://jakarta.apache.org/struts/ 下载struts 1.1,解压缩后,可以看到jakarta-struts-1.1目录,在这个目录下面,你可以看到这样一个目录:webapps.该目录下面有多个*.war,我们copy struts-blank.war 文件到d:/tomcat/webapps下,restart tomcat,在tomcat 的webapps下就会生成一个struts-blank空白struts开发环境。另外,在你解压缩的目录下的webapps中 struts-example.war 是一个很好的struts学习教程,如果你想深入学习请访问http://jakarta.apache.org/struts 或者 下载 《struts in action》 e 文版。
  
  5. 一个简单的例子
  5.1 logon.jsp
  <%@ taglib uri="/web-inf/struts-html.tld" prefix="html" %>
  <%@ page contenttype="text/html; charset=gb2312" %>
  <%
  /**
  * this page shows logon interface.
  * title: logon system
  * description: logon page
  * copyright: copyright (c) 2004
  * company: www.ewe.com.cn
  * @author bluesunny <hyjun2001@163.com>
  * @version 1.0
  */
  response.setheader("pragma","no-cache");
  response.setheader("cache-control","no-cache");
  response.setdateheader("expires", 0);
  %>
  <html>
  <head>
  <title>logon</title>
  </head>
  <body>
  <html:errors/>
  <html:form action="/logon" focus="username">
  username:<html:text property="username" size="25"/>
  password:<html:password property="password" size="25"/>
  <html:submit property=”submit”/>
  </html:form>
  </body>
  </html>
  页面为用户登陆页面,应用到struts的html标签。
  5.2 logonform.java
  package com.logon.app;
  import javax.servlet.http.*;
  import org.apache.struts.action.*;
  /**
  * this page shows logonform.java
  * title: logon system
  * description: logonform page
  * copyright: copyright (c) 2004
  * company: www.ewe.com.cn
  * @author bluesunny
  * @version 1.0
  */
  public class logonform extends actionform{
  private string username;
  private string password;
  public loginform() {
  username = null;
  password = null;
  }
  public void setusername(string username){
  this.username = username;
  }
  public string getusername() {
  return this.username;
  }
  public void setpassword(string password){
  this.password = password;
  }
  public string getpassword(){
  return this.password;
  }
  public void reset(actionmapping mapping, httpservletrequest request)
  {
  username = null;
  password = null;
  }
  }
  这个页面为actionform bean ,主要是用来封装客户端的用户名与密码。
  5.3 logonaction.java
  package com.logon.app;
  import java.io.*;
  import java.sql.*;
  import org.apache.struts.action.action;
  import org.apache.struts.action.actionforward;
  import org.apache.struts.action.actionmapping;
  import org.apache.struts.action.actionform;
  import javax.servlet.*;
  import javax.servlet.http.*;
  import org.apache.struts.action.*;
  /**
  * this page shows logonaction.java
  * title: logon system
  * description: logonaction page
  * copyright: copyright (c) 2004
  * company: www.ewe.com.cn
  * @author bluesunny
  * @version 1.0
  */
  public class logonaction extends action{
  public actionforward execute(actionmapping actionmapping, actionform actionform, httpservletrequest request, httpservletresponse response)throws exception{
  logonform form = (logonform)actionform;
  actionerrors errors = new actionerrors();
  string username = form.getusername();
  string password = form.getpassword();
  if(username.equals(“bluesunny”) && password.equals(“bluesunny”)){
  return actionmapping.findforward("success");
  }else{
  errors.add("login",new actionerror("logon.failed"));
  saveerrors(request,errors);
  return actionmapping.findforward("failed");
  }
  }
  }
  取得actionform中的数据,进行处理,处理结果返回到jsp页面。
  5.4 web.xml
  <?xml version="1.0" encoding="iso-8859-1"?>
  <!doctype web-app
  public "-//sun microsystems, inc.//dtd web application 2.3//en"
  "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd";>
  <web-app>
  <display-name>struts logon application</display-name>
  <!-- standard action servlet configuration (with debugging) -->
  <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.actionservlet</servlet-class>
  <init-param>
  <param-name>config</param-name>
  <param-value>/web-inf/struts-config.xml</param-value>
  </init-param>
  <init-param>
  <param-name>debug</param-name>
  <param-value>2</param-value>
  </init-param>
  <init-param>
  <param-name>detail</param-name>
  <param-value>2</param-value>
  </init-param>
  <load-on-startup>2</load-on-startup>
  </servlet>
  <!-- standard action servlet mapping -->
  <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <!-- the welcome file list -->
  <welcome-file-list>
  <welcome-file>logon.jsp</welcome-file>
  </welcome-file-list>
  <!-- struts tag library descriptors -->
  <taglib>
  <taglib-uri>/tags/struts-bean</taglib-uri>
  <taglib-location>/web-inf/struts-bean.tld</taglib-location>
  </taglib>
  <taglib>
  <taglib-uri>/tags/struts-html</taglib-uri>
  <taglib-location>/web-inf/struts-html.tld</taglib-location>
  </taglib>
  <taglib>
  <taglib-uri>/tags/struts-logic</taglib-uri>
  <taglib-location>/web-inf/struts-logic.tld</taglib-location>
  </taglib>
  <tagli

扫描关注微信公众号