初识Struts2
一、Struts2入门案例
①引入jar包

②在src下创建struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 修改文件 tomact不用重启 -->
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default">
<!-- 第一个action -->
<action name="HelloWordAction" class="cn.happy.action.HelloWordAction">
<result name="success">index.jsp</result>
</action> </package> </struts>
dtd约束条件查找路径:

③创建HelloWordAction类,实现Action接口,不仅定义了public String execute(),还提供了5个字符串类型的静态常量。如
success、none、error、input、login
public class HelloWordAction implements Action{
private String name;
public String execute() throws Exception {
setName("Hello"+name);
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
④配置文件web.xml。将全部请求定位到指定的Struts 2过滤器中

index.jsp页面:
并引用 taglib指令<%@taglib uri="/struts-tags" prefix="s" %>
注:form表单的action属性名应该和struts.xml的action一致
<div>
<h1>
<s:property value="name"/> </h1>
</div> <div>
<form action="HelloWordAction" method="post">
请输入你的姓名:
<input name="name" type="text"><br/><br/>
<input type="submit" value="提交"> </form>
</div>
实现效果:

二、实现自动装配,将action类中的属性 包装到一个实体类User。然后在action类中定义私有属性User,进行封装。在index.jsp页面即可使用User对象点出其属性

三、登录案例:

实现效果:


四、如何使页面上还是username,也能实现 自动装配呢?[模型驱动--ModelDriven]
让Action实现一个ModelDriven<User>,其次手动实例化User对象,并实现该方法,返回user


五、Struts2访问ServletAPI对象获取Session。
分为两类:①解耦的访问方式 ②耦合的访问方式
关键代码:
1、耦合一。
获取到session并返回一个HttpSession.以及session.setAttribute方法获取到username
//耦合
private HttpServletRequest request;
HttpSession session2 = ServletActionContext.getRequest().getSession();
session2.setAttribute("uname", user.getUsername());
2、耦合二。
实现ServletRequestAware接口,并重写其方法,定义一个Request属性并进行封装

request.getSession().setAttribute("uname", user.getUsername());
3、解耦合一
使用ActionContex类获取ServletAPI对象对应的Map对象
private Map<String, Object> map;
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("uname",user.getUsername());

4、解耦合二 注入[IOC思想]。实现SessionAware接口,获取到Map集合
map.put("uname", user.getUsername());

六、struts2常用表单标签

初识Struts2的更多相关文章
- struts征程:1.初识struts2
1.struts2在开发中所必须用到的jar包导入到项目的lib目录下 2.在web.xml中配置一个过滤器,代码格式如下 <filter> <filter-name>stru ...
- Struts2基础学习(一)—初识Struts2
目录 一.什么是Struts2 二.搭建Struts2的开发环境 三.Struts2的配置文件 四.MVC模式 一.什么是Struts2 Struts2是一个非常优秀的MVC框架,由传统 ...
- struts2(一)之初识struts2
前言 我们都知道struts2是一个框架,那什么是框架呢?很多人其实不太明白,其实框架就是一个半成品,别人将一些功能已经写好了,我们只需要拿来用即可,像我们之前 使用的dbutils框架,操作数据,只 ...
- Struts2之初识
Struts2教程 第一章 初识Struts2 主页:http://struts.apache.org/ 优势:用户请求,模块处理,页面展现.适用于企业级开发,便于维护. 配置:web.xml中添加的 ...
- 实现struts2框架
Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages .Servlet.标签库以及面向对象的技术水准.最初的 ...
- struts2.1.6教程一、准备工作及实例
1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. Src 目录:源文%件存放地 2.六个基本包 ...
- Struts2教程
一.初识Struts2 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的 ...
- Struts2的简单使用
一.准备工作及实例 1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. Src 目录:源文件存放 ...
- Struts2 实例(转载)
一.准备工作及实例 1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序docs目录:官方文档. lib 目录:存放所有jar文件. Src 目录:源文件存放地 ...
随机推荐
- [转]Java中的事务
这篇Java事务的说明不错,所以把它转过来收藏了. 原博文地址:http://blog.csdn.net/gyf4817/article/details/5362444 通常的观念认为,事务仅与数据库 ...
- 原生JS:Number对象详解
Number对象 本文参考MDN做的详细整理,方便大家参考MDN JavaScript 的 Number 对象是经过封装的能让你处理数字值的对象.Number 对象由 Number() 构造器创建. ...
- 分位数(quantile)
---------------------------------------------------------------------------------------------------- ...
- ArcSDE安装注意事项
今天因为测试需要配置环境,因此在本机上安装了ArcSDE 9.3 for Oracle11g,但是发现安装完之后服务(esri_sde)出现了启动后又立马停止的问题,解决方法如下: 1)检查Oracl ...
- '[<NSObject 0x8a4b500> setValue:forUndefinedKey:]
Bug如下: Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUnd ...
- Android Animation学习(二) ApiDemos解析:基本Animators使用
Android Animation学习(二) ApiDemos解析:基本Animatiors使用 Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.O ...
- umeng track 相关
NSString * appKey = @"57105bbbe0f55a7938002063"; NSString * deviceName = [[[UIDevice curre ...
- 操作系统开发系列—12.f.在内核中添加中断处理 ●
因为CPU只有一个,同一时刻要么是客户进程在运行,要么是操作系统在运行,如果实现进程,需要一种控制权转换机制,这种机制便是中断. 要做的工作有两项:设置8259A和建立IDT. /*========= ...
- iOS学习19之OC类的扩展
为一个类扩展功能:1.子类化:2.修改源代码:3.定义协议:4.Category:类目 1.Category 1> Category的作用 Category:也叫分类,类目,是为没有源代码的类扩 ...
- Hibernate连接mysql数据库并自动创建表
天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个 ...