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();

4.数据校验
5.Struts2常用标签
-------------------2016年9月25日09:14:36
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"/>

7.呵呵说
呵呵说,这么写太恶心,能不能界面上还是username,也能实现自动装配呢?

解析: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

有待考究:blogs一小篇
Map<String, Object> session = ServletActionContext.getContext().getSession();

Struts2请求流程图

Struts2 讲解笔记的更多相关文章

  1. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  2. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  3. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  4. Struts2 学习笔记(概述)

    Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...

  5. struts2学习笔记--struts.xml配置文件详解

    这一节主要讲解struts2里面的struts.xml的常用标签及作用: 解决乱码问题 <constant name="struts.i18n.encoding" value ...

  6. Struts2复习笔记

    一.Struts2的获得 Struts2的官网是http://struts.apache.org/,需要的同学可以自己去官网上下载. 二.Struts2的配置 以动态web项目为例,讲解配置Strut ...

  7. 【Struts2学习笔记-4】包含其他配置文件

    包含其他配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLI ...

  8. 【Struts2学习笔记-3】常量配置

    Struts2常量 配置Struts2常量值有3个地方,1)在struts.properties文件中配置常量:2)在web.xml文件中配置FileterDispatcher指定初始化参数来配置常量 ...

  9. Struts2学习笔记--Struts例子及开发流程

    参考资料:http://blog.csdn.net/hntyzgn2010/article/details/5547753 http://chenlh.iteye.com/blog/464341 入门 ...

随机推荐

  1. angular2系列教程(四)Attribute directives

    今天我们要讲的是ng2的Attribute directives.顾名思义,就是操作dom属性的指令.这算是指令的第二课了,因为上节课的components实质也是指令. 例子

  2. Handler系列之使用

    作为一个Android开发者,我们肯定熟悉并使用过Handler机制.最常用的使用场景是"在子线程更新ui",实际上我们知道上面的说话是错误的.因为Android中只有主线程才能更 ...

  3. 10.JAVA之GUI编程弹出对话框Dialog

    在上节基础上添加对话框显示错误信息. 代码如下: /*弹出对话框显示错误信息,对话框一般不单独出现,一般依赖于窗体.*/ /*练习-列出指定目录内容*/ import java.awt.Button; ...

  4. JavaScript instanceof vs typeof

    Use instanceof for custom typesvar ClassFirst = function () {};var ClassSecond = function () {};var ...

  5. Linux下的解压命令小结

    Linux下常见的压缩包格式有5种:zip tar.gz tar.bz2 tar.xz tar.Z 其中tar是种打包格式,gz和bz2等后缀才是指代压缩方式:gzip和bzip2 filename. ...

  6. C# 3.0新语言特性和改进(一)

    引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...

  7. 使用AxisHelper帮助理解View and Data API中的坐标系统

    大家使用View and Data API做三维模型开发,必然首先要理解View and Data API的坐标系统,即XYZ三个轴向分别是怎么定义的.Three.js里面提供了一个AxisHelpe ...

  8. 释放Android的函数式能量(I):Kotlin语言的Lambda表达式

    原文标题:Unleash functional power on Android (I): Kotlin lambdas 原文链接:http://antonioleiva.com/operator-o ...

  9. 服务器开启https协议

    开启Tomcat https服务 发布企业级应用的时候遇到一个问题,就是IOS7.1之后app的下载地址URL必须是https开头的协议,所以服务器必须支持https协议. 实验环境:Mac OSX ...

  10. 简单的数据库设计及使用(FMDB)

    有这样一个需求: 有m个用户公用n个文件,一个用户可能会用到多个文件,一个文件可能被多个用户使用: 如果某个用户离开,那这个用户就不再使用任何文件:如果某个文件没有任何用户使用,就要删除该文件: 已知 ...