Struts2 回顾总结

1.第一个Struts2入门案例
1.找jar包
Struts2-core
xwork-core
ognl
javasist
freemarker
commons-lang
commons-io
commons-fileupload

2.在web.xml文件中植入配置,配置了核心过滤器(XXXXFilter)
核心控制器
核心过滤器的名称:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

Ctrl+Shift+T

3.在src下创建一个struts.xml文件
<package name="default" namespace="/" extends="struts-default">
<action name="xxAction逻辑名称:URL请求书写的名称" class="类的物理地址">
<result name="success">/index.jsp</result>
<result name="login">/login.jsp</result>
</action>
</package>
4.在action包中创建一个Action类
实现了特定接口的一个类 Action接口
public class LoginAction implements Action{
public String execute(){
return "success";
}

}
5.写一个index.jsp页面

2.实现登录:认证自动装配
初级的自动装配
page:name Action: name保持一致

中级的自动配置
page:user.namee Action :user对象

高级的自动配置
page:name Action:user(多实现了一个接口:ModelDriven)
前提条件:要手动new出user

3.保存用户信息:ServletAPI如何使用?在Action中如何获取到session对象
解耦
方式一:ActionContext.getContext().getSession()
方式二:IOC注入
实现了接口:SessionAware: 核心方法 setSession(Map<String,Object> map)
Map<String,Object> map;
形成get和set方法

Action的execute方法中,使用map.put()
耦合
方式一:ServletActionContext.getRequest().getSession();

方式二:IOC 注入
实现一个接口:ServletRequestAware setServletRequest(HttpServletRequest request)
Action 中公开一个变量:HttpServletRequest request; get和set方法

Action中的execute方法中就可以 HttpSession=request.getSession();

1.Struts2和MVC
解析:MVC是一种模式,设计思想
Struts2是这种模式的一种实现
Spring MVC
2.WebWork和Struts2关系
解析:Struts1 官方提供的框架
WebWork

3.Struts2标签
1.导入指令
<%@ taglib uri="/struts-tags" prefix="s"%>

2.使用
<s:form>

</s:form>

4.自动装配autoaware
1.login.jsp
name="username"

2.Action中的成员变量名称和登录界面中name属性值一致

5.一个异常
Stacktraces (栈跟踪)
java.lang.NullPointerException 空指针异常

cn.happy.action.LoginAction.execute(LoginAction.java:12)

6.username password ------->user

jsp页面
<input name="user.username"/>
<input name="user.password"/>

解析:ModelDriven (模型驱动)
public abstract interface com.opensymphony.xwork2.ModelDriven {
public abstract java.lang.Object getModel();
}
小tip:
1.让Action实现一个ModelDriven<UserInfo>
2.user对象手动实例化
3.UserInfo getModel(){
return user;
}

8.Servlet API
解析:API(Application Programming Interface) 应用程序编程接口
就是和Servlet相关的一组接口和类

Servlet API 文档
接口和类以及方法的说明,描述
xxx.chm
9.我想在登录成功后,拿到Session,给Session保存用户名。

1.如何在Action中获取到session对象
2.将用户名放入session作用域

10.获取session的两种方案
方式一:耦合

HttpSession session2 = ServletActionContext.getRequest().getSession();

方式二:解耦
Map<String, Object> session = ActionContext.getContext().getSession();

通过注入方案:IOC

时间: 2024-10-16 23:49:28

Struts2 回顾总结的相关文章

struts2回顾之一:ModelDriven机制中的refreshModelBeforeResult属性

已经和三大框架久违多时了,前段时间搞了一段时间的Android,各方面的知识都有所增长,但是框架的一些核心基础知识也忘得差不多了,在今后的时间里,我会不定期的发表框架中的一些基础知识的运用. 首先想介绍的是struts2的原型驱动ModelDriven机制. 所谓的ModelDriven,就是把一个实体类当成页面数据的收集对象.用法看起来像下面这个样子 <span style="font-size:14px;">public class UserAction impleme

Struts2整体回顾 之 Action,拦截器,值栈及关联关系

一.首先看一下当我们使用Struts时,一个请求所走的流程. 二.值栈的示意图 三.一个请求中,拦截器和值栈的时序图 4.请求.值栈结合图 Struts2整体回顾 之 Action,拦截器,值栈及关联关系,布布扣,bubuko.com

Struts2的整体回顾(Action, 拦截器, 值栈, OGNL表示式, ModelDriven)

ValueStack里有map(request, session, attr, parameters)和对象栈. Map调用的方法: ActionContext.getContext().put(k,v)/ get(k) 对象栈的调用方法: ActionContext.getContext.getValueStack().push(obj)/pop(); OGNL格式: struts.xml, OGNL的格式为: ${ognl} jsp里 OGNL的格式为: %{ognl} 语法: user=f

Struts2基本使用(二)--配置文件简述

配置文件简述 引入Struts2框架之后项目中多了一个struts.xml,以及web.xml也多了一些代码 web.xml只要的功能就是拦截用户的请求其多出的代码如下: <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class&

Struts2 简介

回顾Struts2的使用过程,网上搜的教程多多少少都会有点问题,重新记录下创建过程,方便查阅. 1.下载Struts2的jar包 下载地址:http://archive.apache.org/dist/struts/binaries/ 我用的是struts-2.3.14-all.zip这个版本 2.创建一个web project项目 下面给出所有文件均创建完成后的工程师图. 3.导入Struts2所需jar包 因为只是示例程序,只需要导入Struts 2支持最小的包就可以了,网上很多教程中添加的

【struts2】拦截器基础

1)拦截器是什么? 拦截器(Interceptor)是Struts2最强大的特性之一,它是一种可以让你在Action执行之前和Result执行之后进行一些功能处理的机制.来回顾一下官方给出的Struts2系统架构图中关于拦截器的部分,如下图所示: 这个图清晰的描述出了拦截器的运行地位,就是用来负责在Action执行之前和Result执行之后处理一些功能的类.也就是说,上图示意了有3个拦截器的类,分别是Interceptor1.Interceptor2和Interceptor3,它们分别执行不同的

Struts2 源码分析——调结者(Dispatcher)之执行action

章节简言 上一章笔者写关于Dispatcher类如何处理接受来的request请求.当然读者们也知道他并非正真的执行action操作.他只是在执行action操作之前的准备工作.那么谁才是正真的执行action呢?本章笔者就带大家来看看StrutsExecuteFilter类的工作.在理解StrutsExecuteFilter类的工作之前,笔者还是希望大家回顾一下前一章讲到的request请求工作.为什么这样子讲呢?可以说StrutsExecuteFilter类的工作是建立在StrutsPrep

【struts2】ActionContext与ServletActionContext

1 再探ActionContext 我们知道,ActionContext是Action执行时的上下文,里面存放着Action在执行时需要用到的对象,也称之为广义值栈.Struts2在每次执行Action之前都会创建新的ActionContext,在同一个线程里ActionContext里面的属性是唯一的,这样Action就可以在多线程中使用. 1.1 ActionContext的线程安全性 那么Struts2是如何保证ActionContext的线程安全性呢?看看ActionContext对象的

浅析Struts1和Struts2的Action线程安全问题

[问题描述]最近公司安排我面试Java的FreshMan,面试者一般是工作1年多点的新人(这里我就装老一下,其实我也才工作3年不到),在被问及Struts1和Struts2的Action的线程安全问题的时候,大多是支支吾吾,答不出所以然.所以在这里我整理一下我个人的理解. [问题答案] 这是由于Servlet的工作原理产生的.我们先来简单回顾一下Servlet的生命周期“初始化->init->service->destroy->卸载”. 这里大家都知道,我们在web.xml里面定义