struts2是最近刚学的一个框架,想通过写篇文章来加深下印象,这也是本篇博文产生的由来,下面进入正题

Struts2本身是一个挺简单的框架,我们通过写一个登陆的过程来具体描述下其执行过程

1.首先我们创建一个Model-User

其中Model里面包含所需字段,构造函数(有参无参都要有),get和set方法,tostring(没有的话打印出来的数据都是数据所在的地址)

2.我们来创建一个pojo userAction

然后写出具体的实现功能(因为只是描述一下执行流程所以没有连接数据库)

我们在登录成功后可以提取一个数据username到session里面并设为um,这样当需要验证用户是否登录的时候只需要验证um的值是否和username相等就可以了。

重写父类中的方法

3.再写一个pojo  里面充当一个select的功能(简化版)

我们可以把用户信息直接存进ValueStack里面,这样在jsp页面就可以直接获取到了

4.因为Struts2是基于filter的所以我们来写一个拦截器

拦截器想要发挥作用就需要知道拦截哪一类信息,我们先前把username的值放进session里面了并设为um,这时候直接获取um

写一个简单的判断,如果um和username的值相等那就放行arg0.invoke();

不等于的话就返回登录界面

5.pojo写完了  这时候我们来配置Struts.xml

首先是约束文件

这些都不需要记住,需要用的时候查一下就行了

下面我们来配置拦截器

name:拦截器的名字,class:拦截器的位置   excludeMethods(不拦截的方法名 一个action)与之对应的是 includeMethods

然后我们来配置方法的路径和页面跳转

<action name="这个是随意起的,不过最好与method保持一致,用的时候不容易出错" class =“方法的具体位置” method=“固定为方法名,系统跟着这个来找要执行的方法”>

<result name="返回值" ty=“chain”(action跳action的固定写法,不同的跳法都需要写不同的type)>/跳转的页面</result>   根据得到的返回值跳转页面

6.后台程序以及写完了  我们来写两个简单的jsp页面

登录界面  login.jsp

加一个简单的表单验证

在写一个登录成功之后的查询界面

需要注意的是我们使用遍历的话要先加上上面这句话

7.好了  所有工作都做完了  我们来看下运行结果

登录界面

表单验证错误的时候

密码错误的时候

登录成功的时候

拦截器生效的时候  没有登录但是直接跳转查询方法的时候

8.总结

通过上面七步我们已经知道了怎么用Struts2写一个登录功能

现在让我们来总结一下具体的执行流程

1、客户端浏览器发出HTTP请求。

2、根据web.xml配置,该请求被FilterDispatcher接收。

3、根据struts.xml配置,找到需要调用的Action类和方法,根据filter判断是否需要拦截器验证。

4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

6、返回HTTP响应到客户端浏览器

struts2的简单执行过程的更多相关文章

  1. 李洪强漫谈iOS开发[C语言-002]-开发概述程序的本质与简单执行过程

    李洪强iOS开发之应用程序的本质与简单执行过程 什么叫程序? 就是一段执行指令 程序的两个状态: 保存状态(保存到硬盘上)   运行状态(由CPU执行) 代码可以执行吗? CPU(中央处理器-> ...

  2. Action的三种实现方式,struts.xml配置的详细解释及其简单执行过程(二)

    勿以恶小而为之,勿以善小而不为--------------------------刘备 劝诸君,多行善事积福报,莫作恶 上一章简单介绍了Struts2的'两个蝴蝶飞,你好' (一),如果没有看过,请观 ...

  3. MapReduce简单执行过程及Wordcount案例

    MapReducer运行过程 以单词统计为案例. 假如现在文件中存在如下内容: aa bb aa cc dd aa 当然,这是小文件,如果文件大小较大时会将文件进行 "切片" ,此 ...

  4. Struts2学习-struts执行过程简述

    1.web.xml <web-app> <filter> <filter-name>struts2</filter-name> <filter-c ...

  5. Struts2执行过程解析

    说到Struts2执行过程就少不了一张图: 1 客户端初始化一个指向Servlet容器的请求: 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextClea ...

  6. struts2学习(5)拦截器简介以及例子执行过程

    一.拦截器简介: 二.Struts2预定义拦截器&拦截器栈 在执行action之前和之后,拦截器进行了操作: 比如struts-default.xml中就有很多预定义的拦截器:   拦截器栈: ...

  7. Struts2拦截器的执行过程浅析

    在学习Struts2的过程中对拦截器和动作类的执行过程一度陷入误区,特别读了一下Struts2的源码,将自己的收获分享给正在困惑的童鞋... 开始先上图: 从Struts2的图可以看出当浏览器发出请求 ...

  8. 四、Struts2的执行过程和原理

    执行过程和原理(可能面试题) 学习目标:熟知struts2的执行过程(下图记住).源码可以不看 a.过滤器的初始化 .StrutsPrepareAndExecuteFilter是一个过滤器,过滤器就有 ...

  9. ASP.NET Web API 控制器执行过程(一)

    ASP.NET Web API 控制器执行过程(一) 前言 前面两篇讲解了控制器的创建过程,只是从框架源码的角度去简单的了解,在控制器创建过后所执行的过程也是尤为重要的,本篇就来简单的说明一下控制器在 ...

随机推荐

  1. 扩展js,实现c#中的string.format方便拼接字符串

    //"{0}-{1}-{2}".format("xx","yy","zz") //显示xx-yy-zz String.p ...

  2. Telerik 控件 RadGridview实现绑定

    0.使用MiroModes框架请先阅读http://blogs.telerik.com/blogs/posts/10-01-20/micromodels_for_silverlight.aspx 1. ...

  3. (图文实例)用VB.net操作SQLite数据库

    转载请注明出处:HateMath归来(http://www.cnblogs.com/hatemath/) 环境: Visual Studio 社区版 64位 Windows 7系统 新建的解决方案基于 ...

  4. C#高级编程第9版 阅读笔记(一)

    一.前言 C# 简洁.类型安全的面向对象的语言. .NET是一种在windows平台上编程的架构——一种API. C#是一种从头开始设计的用于.NET的语言,他可以利用.NET Framework及其 ...

  5. JS 巧用 && 与 ||

    在对于流程控制语句当中,我们最熟悉不过的就是 if (条件){ //代码块 }else{ //代码块 } 对于一个执行不同的代码来说,如果执行的代码很多,可能就有必要使用上面这种方式 但往往我们开发当 ...

  6. UWP win10 app 新关键字x:Bing

    原本使用MVVM开发,我们使用数据绑定是x:Binging 新的关键字x:Bing使用和原来x:Binging区别不大. <TextBox x:Name="textBox" ...

  7. Java跨域问题的处理详解

    1,JavaScript由于安全性方面的考虑,不允许页面跨域调用其他页面的对象,那么问题来了,什么是跨域问题? 答:这是由于浏览器同源策略的限制,现在所有支持JavaScript的浏览器都使用了这个策 ...

  8. Spring源码情操陶冶-AOP之Advice通知类解析与使用

    阅读本文请先稍微浏览下上篇文章Spring源码情操陶冶-AOP之ConfigBeanDefinitionParser解析器,本文则对aop模式的通知类作简单的分析 入口 根据前文讲解,我们知道通知类的 ...

  9. Java的继承、封装与多态

    Java的继承.封装与多态 基本概念 面向对象OO(Object Oriented):把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象. 对同类对象抽象出共性,即类. 比如人就是一个类 ...

  10. Java基础总结--面向对象1

    ---面向对象的概念---1.面向过程与面向对象的区别面向过程:是一种思维习惯,解决一个问题的时候靠的是一个个方法调用--核心是动作面向对象:是一种更接近生活中解决问题的思维习惯,解决特定的问题靠对象 ...