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来使用。


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.示例效果


1.    配置Structs2应用环境

开发环境:

Eclipse Oxygen.3 Release (4.7.3)

jdk-9.0.4

Tomcat 9.0

struts-2.5.14.1

需要导入的jar包:


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
id="WebApp_ID" 
version="3.1">
  <display-name>hellostruts</display-name>
  <!-- 配置StrutsPrepareAndExecuteFilter核心控制器 -->
  <filter>
    <!-- 过滤器名 -->
    <filter-name>filter</filter-name>
    <!-- StrutsPrepareAndExecuteFilter核心控制器的实现类 -->
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <!-- 过滤器名 -->
    <filter-name>filter</filter-name>
    <!-- 过滤器过滤所有请求 -->
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

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

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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>Hello Struts2</title>
</head>
<body>
<form action="user.action" method="post">
  <p>用户名: <input type="text" name="userName"><br>
  <p>地址:<input type="text" name="address"><br>
  <p>电话:<input type="text" name="tel"><br>
  <p>邮箱:<input type="text" name="email"><br>
  <p><input type="submit" value="提交">
</body>
</html>

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中配置业务控制器

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 "http://struts.apache.org/dtds/struts-2.5.dtd">
 <struts>
    <package name="default" namespace="/" extends="struts-default">
        <!-- 定义一个名为user的Action,实现类为com.zhaoyuan.action.UserAction -->
        <action name="user" class="com.zhaoyuan.action.UserAction">
            <!-- 配置execute()方法返回值与视图资源 之间的映射关系-->
            <result name="success">/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
 </struts>

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

success.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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>success</title>
</head>
<body>
用户名:${param.userName }<br>
地址:${param.address }<br>
电话:${param.tel }<br>
邮箱:${param.email }<br>
</body>
</html>

error.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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>error</title>
</head>
<body>
出错
</body>
</html>

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

  


参考链接:

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

struts2面试题


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值