您的位置:首页 > 编程语言 > Java开发

struts工作流程

2008-12-17 23:16 483 查看
Struts作为高端技术SSH框架中的一部分,还是有其独特的一面,有的人刚刚接触到Struts的时候可能会有些迷茫,我也是刚刚接触的时候就会有迷茫,但是我沉下心来,细细的品味一段代码的时候,发现有了一丝头绪与大家分享一下,Struts作为MVC的开源框架,我建议大家先理解下JSP Modul 2随后在进入Struts的学习,相信会更有帮助,我认为在Struts中要理解运行流程,我们先要理解Struts-config.xml,因为Struts中,的运行过程中,大部分都是根据这个xml进行调用。

我先叙述下Struts的运行流程,由于我也是刚刚理解Struts所以我说的这段流程是建立在没有调用验证方法基础之上,首先我们看到一个jsp页面,由jsp页面上传表单信息给action后面的地址,此时控制器则根据struts-config.xml进行上传,传送给相应的ActionForm,在xml中的体现就是在<acion-mappings>中<action>的配置,其中path是页面上通过什么样的url地址来访问,说白了,就是前面你那个action后面跟的那个位置,随后根绝name确定哪个Form被创建,随后根据这个名字到上面的form-bean中的type寻找相应的位置,把表单数据传递进去,与此同时还要根据type到Action中进行执行代码,在Action工作结束前根据mapping.findforward跳转到相应的jsp页面。这就是简单的一个流程。下面我们看下代码。

index.jsp 就是用来上传表单的。

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>
<center>
<form action="ActionServlet.do" method="post">

//这里写成ActionServlet.do的原因就是web.xml的配置原因。

web.xml中url-pattern配置的是*.do
请输入您的名字: <input name="name" type="text">
<input name="submit" value="提交" type="submit">
</form>
<hr>
<%out.println(request.getAttribute("name")); %>
</center>

</body>
</html>

IndexAction.java 这个就是Action,在往FormAction中传值的过程中

这里的代码也是要执行的。

package cn.com.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import cn.com.form.Form;

public class IndexAction extends Action{

public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){

//将ActionForm 强制转换为 form
Form form1= (Form)form;

String name = form1.getName();

request.setAttribute("name", name);
return mapping.findForward("success");

//在Action运行结束之前进行跳转,这里的success只是一个名字,

具体跳转到的地方还是要根据struts-config.xml中的配置进行跳转。
}
}

Form.java这个就是FormAction

package cn.com.form;

import org.apache.struts.action.ActionForm;

public class Form extends ActionForm{

private String name;

public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}

public Form() {

}

public ActionForm validate(){

return null;
}
public void reset(){

}

}

struts-config.xml的配置

<struts-config>

<form-beans>
<form-bean name="Form" //相当于一个名字,也就是一个标识

type="cn.com.form.Form" //这个FormBean的位置

>
</form-bean>
</form-beans>

<action-mappings>
<action
attribute="Form" //绑定Form要跟上面的bean中的name一样
input="/index.jsp" //出现错误的时候跳转到的页面
name="Form" //一个标识但是要与上面的Bean中的相同。
path="/ActionServlet" //通过哪个url地址访问
scope="request" //作用返回
type="cn.com.action.IndexAction" //这个Action在哪个类中

>
<forward name="success" path="/index.jsp" />
</action>
</action-mappings>
<message-resources parameter="cn.com.Application.ApplicationResources" />
</struts-config>

web.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: