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(一)的更多相关文章

  1. struts2默认配置文件 struts-default.xml

    注:用的struts2的版本是2.1.6 strtus2的默认配置文件 struts-default.xml ,其中的默认的拦截器,包括其中的拦截器栈. 因为struts2的配置文件struts.xm ...

  2. Struts2 contentType属性列表

    Struts2 contentType属性列表 博客分类: Struts 2   'ez' => 'application/andrew-inset', 'hqx' => 'applica ...

  3. [转]Struts2理解--动态方法和method属性及通配符_默认Action

    众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...

  4. Struts2 基本配置

    Struts2是一个优秀的MVC框架,也是我比较喜欢用的框架.它个各种配置基本都可以集中在一个xml文档中完成.现在让我们看看如何简单几步实现常用功能. 一.搭建Struts2的开发环境 1)首先是利 ...

  5. Struts2理解--动态方法和method属性及通配符_默认Action

    众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...

  6. Struts2(五):ActionSupport

    我们在上一章节中的一个列子中使用到了一个标识跳转到登录页面的例子: 示例是这样写的: index.jsp: <br/> <a href="gotoLoginPage&quo ...

  7. struts2:拦截器

    拦截器(Interceptor)是Struts 2的核心组件,Struts 2框架的大部分功能都是通过拦截器来完成的,例如数据校验,国际化,文件上传和下载等.为了实现这些功能,Struts 2框架提供 ...

  8. 基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录

    原文 基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录 首先说说 IDEA 12,由于myeclipse越来越卡,我改用idea12 了,发现其功能强悍 ...

  9. struts2环境搭建和第一个程序

    环境搭建 项目目录 导入依赖jar包,如上图lib目录所示. 不同的版本可能会不一样,没关系在tomcat启动时,如果报错java.lang.ClassNotFoundException,我们可以按照 ...

  10. struts2文件上传,文件类型 allowedTypes

    struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript ...

随机推荐

  1. 自定义防SQL注入函数

    /************************************************ *SQL防注入函数 *@time 2014年6月24日18:50:59 * */ public fu ...

  2. Java Enum 比较用 == 还是 eques

    我是把枚举当作常量来使用的,枚举中还有两个自己的属性,关注到这个地方的朋友对枚举已经有了认识,这里就不再编写枚举的demo了,这里我直接说结果吧,在枚举中使用==和equals比较效果是一样的,查看源 ...

  3. pip源提示“not a trusted or secure host” 解决

    问题:The repository located at mirrors.aliyun.com is not a trusted or secure host and is being ignored ...

  4. 1 了解Scala

    1 定义变量 单个变量:var name = "benxintuzi" 等价于  var name : String = "benxintuzi"(即定义变量时 ...

  5. D-hdu 1465 不容易系列之一(递推)

    hdu 1465 不容易系列之一(错排) 不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  6. 【python】-- 基于Django的杂货铺

    Django的杂货铺 此篇文章保存基于Django而实现的各种小功能示例 1.验证码 + Session 这个是在前端图片验证码的生成,再配合Session进行后端校验的功能示例 import ran ...

  7. HDU 4513 吉哥系列故事――完美队形II(Manacher)

    题目链接:cid=70325#problem/V">[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher V - 吉哥系列故事――完美队形I ...

  8. jQuery实现复选框全选/所有取消/反选/获得选择的值

    <!DOCTYPE html> <html> <head> <script type="text/javascript" src=&quo ...

  9. Spring之AOP由浅入深(转发:https://www.cnblogs.com/zhaozihan/p/5953063.html)

    1.AOP的作用 在OOP中,正是这种分散在各处且与对象核心功能无关的代码(横切代码)的存在,使得模块复用难度增加.AOP则将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可 ...

  10. 深度问答之提取语料,导入了yml模块

    根据目录下的yml文件循环创建同名文件夹,并从yml文件读取问答并给每个文件夹写入question和answer文件 #!/usr/bin/env python # coding:utf8 # aut ...