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 ...
随机推荐
- 线程池 http请求
package com.aibi.cmdc.test; import java.io.BufferedReader; import java.io.InputStream; import java.i ...
- drawRect setNeedsDisplay layoutSubViews
drawRect setNeedsDisplay layoutSubViews 1. drawRect: is invoked automaticall,never call it directl ...
- 网络编程------socketserver模块以及socket模块的更多用法.
socketserver模块 内置模块 (其实现原理为并发) socketserver这个模块主要是为了解决: TCP协议中,服务器不能同时连接多个客户端的问题 是处于socket抽象层和应用层之间的 ...
- Command 'java' not found during running appium
Question: When Execution code:driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4723/wd/hu ...
- python 深复制与浅复制------copy模块
模块解读: 浅复制: x = copy.copy(y)深复制: x = copy.deepcopy(y)(注:模块特有的异常,copy.Error) 深copy与浅copy的差别主要体现在当有混合对象 ...
- 记录-在jsp页面获取后台值在页面显示过长处理
在下面的红色标记处 后台获取的值(字符串)在页面显示过长或者与其他重叠 (xxx).cutStr(15) 15代表的是展示字符串的长度 data.rows[i].avgPrice, ), data.r ...
- python3的时间日期处理
1.python3日期和时间 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时 ...
- MyBaits面试题
原文地址 Mybatis技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用Mybatis的文章,所以,一些参数使用细节略掉了,我们的 ...
- 第1条:确认自己所用的Python版本
很多电脑都预装了多个版本的标准CPython运行时环境,然而,在命令行中输入默认的python命令之后,究竟会执行哪一个版本无法肯定. python通常是python2.7的别名,但也有可能是pyth ...
- JDK线程池的实现
线程池 接口Executor 该接口只有一个方法,JDK解释如下 执行已提交的Runnable 任务的对象.此接口提供一种将任务提交与每个任务将如何运行的机制(包括线程使用的细节.调度等)分离开来的方 ...