struts2--Basic(一)
Struts是流行和成熟的基于MVC设计模式的WEB应用程序框架。
帮助我们减少在运用MVC设计模式来开发Web应用的时间。

1、下载添加jar包

2、 准备配置文件
web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configure 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" namespace="/" extends="struts-default">
<action name="nyan" class="com.nyan.action.Demo01">
<result>/result.jsp</result>
</action>
</package> </struts>
3、 创建Action
package com.nyan.action;
import com.opensymphony.xwork2.ActionSupport;
public class Demo01 extends ActionSupport {
@Override
public String execute() throws Exception {
System.out.println("执行Action");
return SUCCESS;//跟result 的 name 属性相对应
}
}
struts2核心文件:
web.xml
任何MVC框架都需要与Web应用整合,就需要借助web.xml文件,只有配置web.xml文件,Servlet才会被应用加载。
通常所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts2框架,需要加载:
StrutsPrepareAndExecuteFilter
只要web应用加载了StrutsPrepareAndExecuteFilter,
StrutsPrepareAndExecuteFilter就会加载struts2框架。
struts.xml
该文件主要负责管理应用中的Action映射,以及该Action包含的Result定义
包含:全局属性、用户请求和响应Action之间的关系、Action可能用到的参数和返回结果、各种拦截器的配置
struts.propeties
访问Servlet-API:
struts提供三种方式访问:ActionContext、实现***Aware接口、ServletActionContext
Action搜索顺序:
http://localhost:8080/strutsDemo/path1/path2/nyan.action
第一步,判断package是否存在,如:path1/path2
存在(com.nyan.action)
判断action是否存在,如果不存在则去默认namespace的package里面寻找action
不存在(default)
检查上一级path1路径的package是否存在(直到默认namespace),重复第一步
三种动态方法调用:
1、指定method属性,2、感叹号方式,3、通配符方式
解决一个Action对应多个请求的处理,以免action太多
不仅仅是execute方法,通过指定method属性,感叹号方式,通配符方式
method:有多少个method就有配置多少个action
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
http://localhost:8080/strutsDemo/nyan!add.action
指定多个配置文件:
<include file=""/>
<constant name="struts.i18n.encoding" value="UTF-8"/>
默认Action:
解决找不到action问题
<default-action-ref name="index"/>
<action name="index">
<result>/error.jsp</result>
</action>
struts后缀:
<constant name="struts.action.extension" value="do"/>
接收参数:
1、使用Action的属性接收
login.jsp
<form action="LoginAction">
用户名:<input type="text" name="username"/><br>
密码:<input type="password" name="password"/><br>
<input type="submit" value="submit"/>
</form>
public class LoginAction extends ActionSupport {
private String username;//对应input的name属性的值
private String password;
//getter,setter....
public String login(){
System.out.println(username);
return "login";
}
<action name="LoginAction" method="login" class="com.nyan.action.LoginAction">
<result name="login">/success.jsp</result>
</action>
2、使用DomainModel接收
<form action="LoginAction">
用户名:<input type="text" name="user.username"/><br>
密码:<input type="password" name="user.password"/><br>
<input type="submit" value="submit"/>
</form>
private User user;//user对应user.username的user
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String login(){
System.out.println(user.getUsername());
return "login";
}
3、使用ModelDriven接收参数
<form action="LoginAction">
用户名:<input type="text" name="username"/><br>
密码:<input type="password" name="password"/><br>
<input type="submit" value="submit"/>
</form>
public class LoginAction extends ActionSupport implements ModelDriven<User>{
private User user = new User();
public String login(){
System.out.println(user.getUsername());
return "login";
}
@Override
public User getModel() {
return user;
}
}
处理结果类型:

struts2--Basic(一)的更多相关文章
- struts2默认配置文件 struts-default.xml
注:用的struts2的版本是2.1.6 strtus2的默认配置文件 struts-default.xml ,其中的默认的拦截器,包括其中的拦截器栈. 因为struts2的配置文件struts.xm ...
- Struts2 contentType属性列表
Struts2 contentType属性列表 博客分类: Struts 2 'ez' => 'application/andrew-inset', 'hqx' => 'applica ...
- [转]Struts2理解--动态方法和method属性及通配符_默认Action
众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...
- Struts2 基本配置
Struts2是一个优秀的MVC框架,也是我比较喜欢用的框架.它个各种配置基本都可以集中在一个xml文档中完成.现在让我们看看如何简单几步实现常用功能. 一.搭建Struts2的开发环境 1)首先是利 ...
- Struts2理解--动态方法和method属性及通配符_默认Action
众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...
- Struts2(五):ActionSupport
我们在上一章节中的一个列子中使用到了一个标识跳转到登录页面的例子: 示例是这样写的: index.jsp: <br/> <a href="gotoLoginPage&quo ...
- struts2:拦截器
拦截器(Interceptor)是Struts 2的核心组件,Struts 2框架的大部分功能都是通过拦截器来完成的,例如数据校验,国际化,文件上传和下载等.为了实现这些功能,Struts 2框架提供 ...
- 基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录
原文 基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录 首先说说 IDEA 12,由于myeclipse越来越卡,我改用idea12 了,发现其功能强悍 ...
- struts2环境搭建和第一个程序
环境搭建 项目目录 导入依赖jar包,如上图lib目录所示. 不同的版本可能会不一样,没关系在tomcat启动时,如果报错java.lang.ClassNotFoundException,我们可以按照 ...
- struts2文件上传,文件类型 allowedTypes
struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript ...
随机推荐
- xml schema复杂类型
xml schema复杂类型 对于复杂类型,xs:complexType, xs:sequence子节点必须有. <?xml version="1.0"?> <x ...
- shell脚本57问
[1]交互方式.非交互方式.Shell脚本是什么? 经常与linux打交道,肯定对shell这个词不陌生.不明白shell意思的,可以自行翻译:外壳.去壳. 这个翻译结果怎么可以与计算机系统联系起来呢 ...
- Oracle关于快速缓存区应用原理
为什么oracle可以对于大量数据进行訪问时候能彰显出更加出色表现,就是通过所谓的快速缓存来实现数据的快速运算与操作.在之前的博文中我已经说过sql的运行原理,当我们訪问数据库的数据时候,首先不是从数 ...
- Android屏幕密度(Density)和分辨率概念详解
移动设备有大有小,那么如何适应不同屏幕呢,这给我们编程人员造成了很多困惑.我也是突然想到这些问题,然后去网上搜搜相关东西,整理如下. 首先,对下面这些长度单位必须了解. Android中的长度单位 ...
- Nodejs通过thrift访问Java服务
上一篇文章中实现了用Java作为thrift客户端和服务端.接下来我们用nodejs作为客户端访问一下.Nodejs的安装可以查看http://www.cnblogs.com/xucheng/p/39 ...
- iOS ARC也会有内存泄露
本文转载至 http://blog.csdn.net/allison162004/article/details/38753219 iOS提供了ARC功能,很大程度上简化了内存管理的代码. 但使用A ...
- 【bzoj2226】[Spoj 5971] LCMSum 欧拉函数
题目描述 Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes the Leas ...
- WinForm开发----关闭window窗体最好的办法
最近有一人问道,如何切换窗体.一想到这,我就想,不就是new一个form,然后就show么? 可是我发现,当你控制某个属性的时候,不是不能控制,只是很麻烦而已.有没有好的办法?当然有,咋办? 最简单最 ...
- Hibernate 表连接hql语句
现有两个表 user 表 和 VIPcard 表 UserVo user VIPcardVo 中含有 UserVo user select v from VIPCardVo v left join ...
- 九度OJ 1195:最长&最短文本 (搜索)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3144 解决:1156 题目描述: 输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输 ...