Structs2示例

关于Struts2

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求。

Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。
1)核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。
2)业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。

Structs2示例_第1张图片

1、客户端(Client)向服务器发送一个请求(request) 
2、客器(Container)通过web.xml映射请求,并获得控制器(Controller)的名字。 
3、容器(Container)调用控件器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。在Struts2.1以前调用FilterDispatcher,Struts2.1之后调用StrutsPrepareAndExecuteFilter。 
4、控制器(Controller)通过ActionMapper获得Action的信息。 
5、控制器(Controller)调用ActionProxy。 
6、ActionProxy读取struts.xml文件读取相应的action和interceptor stack的信息。 
7、ActionProxy把request请求传递给ActionInvocation。 
8、ActionInvocation依次调用action和interceptor。 
9、根据action执行结果,产生result。 
10、Result信息返回给ActionInvocation。 
11、产生一个HttpServletResponse响应。 

12、将产生的响应返回给客户端。

0.示例效果

Structs2示例_第2张图片

1.    配置Structs2应用环境

开发环境:

Eclipse Oxygen.3 Release (4.7.3)

jdk-9.0.4

Tomcat 9.0

struts-2.5.14.1

需要导入的jar包:

Structs2示例_第3张图片

web.xml



  hellostruts
  
  
    
    filter
    
    org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
  
  
    
    filter
    
    /*
  
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  

2.      创建输入视图,接受用户输入的数据

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




Hello Struts2


用户名:

地址:

电话:

邮箱:


3.      创建业务控制器,并实现其业务处理方法execute()方法

package com.zhaoyuan.action;
 
import com.opensymphony.xwork2.Action;
 
public class UserAction implements Action {
   private String userName;
   private String address;
   private String telephone;
   private String email;
  
   public String getUserName() {
            return userName;
   }
   public void setUserName(String userName) {
            this.userName = userName;
   }
   public String getAddress() {
            return address;
   }
   public void setAddress(String address) {
            this.address = address;
   }
   public String getTelephone() {
            return telephone;
   }
   public void setTelephone(String telephone) {
            this.telephone = telephone;
   }
   public String getEmail() {
            return email;
   }
   public void setEmail(String email) {
            this.email = email;
   }
 
   @Override
   public String execute() throws Exception {
            if(userName.length()>6) {
                     return "success";
            }else {
                     return "error";
            }
   }
}

4.      在struts.xml中配置业务控制器



 
    
        
        
            
            /success.jsp
            /error.jsp
        
    
 

5.      创建结果视图,显示结果数据

success.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




success


用户名:${param.userName }
地址:${param.address }
电话:${param.tel }
邮箱:${param.email }

error.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




error


出错


6.      运行web应用,显示结果页面

Structs2示例_第4张图片  Structs2示例_第5张图片

Structs2示例_第6张图片


参考链接:

图片来源: Struts2简述及工作原理

struts2面试题


你可能感兴趣的:(Struts2)