首先展现在大家面前的是一张Struts2的工作原理图

Struts2的运行流程

1)  客户端初始化一个指向Servlet容器(例如Tomcat)的请求。
2)  这个请求经过一系列的过滤器(Filter)。
3)  接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。
4)  如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。
5)  ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
6)  ActionProxy创建一个ActionInvocation的实例。
7)  ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8)  一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
Struts2的核心就是拦截器。Struts.xml中所有的package都要extends="struts-default"。同理与所有的Java类都要extends自Object一样。struts-default.xml里面就是要做以上事情。

Struts2的运行机制

1)客户端在浏览器中输入一个url地址。
2)这个url请求通过http协议发送给tomcat。
3)tomcat根据url找到对应项目里面的web.xml文件。
4)在web.xml里面会发现有struts2的配置。
5)然后会找到struts2对应的struts.xml配置文件。
6)根据url解析struts.xml配置文件就会找到对应的class。
7)调用完class返回一个字String,根据struts.xml返回到对应的jsp。

案例如下:

第一步:把struts2的jar包加入的项目中

如图:基本的八个jar包

第二步:在web.xml中加入拦截器配置。

代码如下:

 1 <filter>
 2         <filter-name>struts2</filter-name>
 3         <filter-class>
 4             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
 5         </filter-class>
 6     </filter>
 7     <filter-mapping>
 8         <filter-name>struts2</filter-name>
 9         <url-pattern>/*</url-pattern>
10     </filter-mapping>

第三步::把空的struts.xml配置文件放到项目src下面。

<struts>
   
</struts>

第四步:编写自定义的action类。

代码如下:

 1 package cn.bdqn.Struts2.Dao;
 2
 3
 4
 5 import java.util.Map;
 6
 7 import org.apache.struts2.interceptor.SessionAware;
 8
 9 import cn.bdqn.Struts2.entity.User;
10
11 import com.opensymphony.xwork2.Action;
12 import com.opensymphony.xwork2.ActionContext;
13
14 public class Struts implements Action {
15     private User user;
16     private Map<String, Object> session;
17     public String execute() throws Exception {
18         if (user.getUsername().equals("admin") && user.getPassword().equals("123")) {
19             //记录session
20             //session = ActionContext.getContext().getSession();
21             session.put("name",user.getUsername());
22             session.put("pwd", user.getPassword());
23             return "success";
24         }else {
25             return "error";
26         }
27
28     }
29     public Map<String, Object> getSession() {
30         return session;
31     }
32     public void setSession(Map<String, Object> session) {
33         this.session = session;
34     }
35     public User getUser() {
36         return user;
37     }
38
39     public void setUser(User user) {
40         this.user = user;
41     }
42
43
44
45
46 }

第五步:编写struts.xml配置文件

代码如下:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5
 6 <struts>
 7     <constant name="struts.devMode" value="true" />
 8
 9     <package name="default" namespace="/" extends="struts-default">
10 <!--
11         <action name="index" class="cn.bdqn.Struts2.Dao.Struts">
12             <result  name="success">index2.jsp</result>
13             <result  name="error">fail.jsp</result>
14         </action>
15          -->
16
17         <action name="index2" class="cn.bdqn.Struts2.Dao.Demo">
18             <result  name="success">index2.jsp</result>
19             <result  name="input">index.jsp</result>
20         </action>
21
22     </package>
23 </struts>

第六步:编写index.jsp文件

代码如下:

 1 <body>
 2     <div>
 3         <h1>用户登录</h1>
 4         <s:fielderror fieldName="Username" />
 5
 6                 <%--<s:property value="errors.password">
 7             --%><form action="index2.action" method="post">
 8                 用户名:<input type="text" name="user.username" /><br /> 密 码:<input
 9                     type="text" name="user.password"><br /> <input
10                     type="submit" value="提交" />
11             </form>
12             <s:debug></s:debug>
13     </div>
14 </body>

第七步:启动tomcat,在浏览器中访问

http://localhost:8080/StrutsDay02

然后就会出现你的成果了!

转载于:https://www.cnblogs.com/yhsj/p/5259149.html

Struts2的简单认识相关推荐

  1. Struts2的简单介绍

     1.Struts 2是Struts的下一代产品,是在 struts1和WebWork的技术基础上进行了合并的全新的Struts2框架.其全新的Struts2的体系结构与Struts1的体系结构差 ...

  2. Struts2框架简单入门

    Struts2框架简单入门 1.前言 2.Struts2简介 2.1.Struts2介绍 2.2.Struts2优缺点 2.2.1.优点 2.2.2.缺点 2.2.3.Struts2获取 3.入门案例 ...

  3. struts2.0简单页面 (不带拦截器和带拦截器案例)

    做一个不带拦截器的struts 登录验证             不带拦截器,用户能直接访问action页面访问到数据,起不到登录验证的作用 1.使用c3p0  连接 mysql  ,数据库字段与 j ...

  4. Struts2实现简单的在线人数统计

    用Strust2框架的知识简单实现一个统计在线人数的问题. 1 搭建开发环境:(配置文件,jar包等问题) 2 index.jsp 1 <%@ page language="java& ...

  5. Struts2的简单使用

    一.准备工作及实例 1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. Src 目录:源文件存放 ...

  6. Struts2的简单搭建(三)

    Struts2简单搭建学习 本节的目标 1.struts.xml中action的配置 2.几种配置action的方式 struts.xml中action的配置 1.action是package下的一个 ...

  7. struts2配置文件(简单)

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...

  8. java刘保_[SSH] Eclipse+Struts2的简单应用

    终于要开始研究框架了,没有大神的指导,只能自己上网摸索着来,没有唯一对的方案,只能找到最适合自己的就可以了. 首先整理一下,代码是参考别人的代码,按照别人的版本有问题,大概整理了一下,自己重新弄了一个 ...

  9. Struts2框架简单介绍

    如需,了解Struts2详情,请点击,传送门 工作原理 在Struts2 框架中的处理大概分为以下步骤: 1.客户端初始化一个指向servlet容器(例如Tomcat)的请求. 2.这个请求经过一系列 ...

最新文章

  1. webSocket详解
  2. 考csp所需算法_CSP vs RxJS:您所不知道的。
  3. docker 的mysql镜像使用手册 官网原文 日期2017-05-25
  4. Oracle宣布新的Java Champions
  5. RAISERROR (Transact-SQL)
  6. drupal 使用补丁_使用Drupal解决大学需求
  7. 大过年的,程序员在家改bug…
  8. 软件项目管理案例教程第4版知识清单
  9. 云杰恒指:8.30恒指期货早盘资讯
  10. Python 判断素数(循环结构)
  11. ARM 开发板的选型支持
  12. Klog开发笔记——分页插件 Kaminari 介绍
  13. Windows注册服务的两种方式,并设置服务开机自启
  14. c 语言字符型转换为整形,高楼平地起!C语言数据的两种类型转换
  15. 什么是对象,如何面向对象,为什么要面向对象
  16. 花仙里云课堂知识付费v1.2.25知识付费 教育 直播
  17. java输出三维数组
  18. 人类早期驯服野生CNN卷积神经网络的情景
  19. seo优化:把百度放进数据库
  20. 想让AI变现?这六大市场营销场景不容忽视

热门文章

  1. HTML和CSS基础知识
  2. ubuntu 安装SSH并设置免密码登录
  3. 如何在Unity中播放影片
  4. 关于图像特征的提取【转】
  5. MIPS(loongson)linux 中添加系统调用
  6. .NET Framework 3.5 中的功能简介(1)
  7. Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索
  8. linux date使用方法,linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例)...
  9. jsp用session判断输入框_[实战小剧场servletamp;jsp] 用户登录及退出功能实现
  10. qstring 属于元数据类型吗_2020年退休养老金只有1800元,属于什么水平?还要继续工作吗?...