Struts2基本知识

Struts2简介

Struts是一个JavaWeb框架, Struts2并不是在Struts1基础上改进的一个框架,而是基于 WebWork的全新框架。Struts2是基于MVC开发模型的一个框架, 基于表现层框架.

Struts2的安装与配置

  • 下载 Struts2 的发行包 http://struts.apache.org
  • 构建路径的顶端, 创建配置文件:struts.xml
  • 配置控制器映射: 框架提供配置过滤器 StrutsPrepareAndExecuteFilter
  • 部署查看:struts2-core-*.jar —struts2的核心包

struts2的执行原理及流程

这里写图片描述

jsp:

 <a href="${pageContext.request.contextPath}/hello.action">               
 点这里</a>

struts.xml:

  <struts>
    <package name="p1" extends="struts-default">
        <action name="helloworld" class="com.lanou.action.helloworld.He
lloAction" method="sayHello">
<result name="success">/success.jsp</result>
             <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

action:

 public class HelloAction {
    public String sayHello(){
System.out.println("动作执行了");
        return "success";
    }

这里写图片描述

struts2的配置文件

配置文件的加载顺序

  • default.properties
  • struts-default.xml
  • struts-plugin.xml
  • struts.xml : 在应用的构建路径顶端。自己定义的Struts配置文件(推荐)
  • struts.properties : 在应用的构建路径顶端。程序员可以编写(不推荐)
  • web.xml: 配置过滤器时,指定参数。程序员可以编写(不推荐)

代码验证配置文件

Struts2的默认请求路径是XXX.action,改成 *.do,此处的默认配置在default.properties中

struts.xml:

<constant name="struts.action.extension" value="do,,"/>

struts.properties

struts.action.extension=doo

web.xml

 <init-param>
       <param-name>struts.action.extension</param-name>
       <param-value>dooo</param-value>
   </init-param>

配置文件中常用标签

constant:

  • 指定处理请求后缀
 <constant name="struts.action.extension" value="do,,"></constant>  
  • 开发者模式
<constant name="struts.devMode" value="true"></constant>
  • 指定默认编码集
<constant name="struts.i18n.encoding" value="utf-8"></constant>
  • 上传文件大小限制
<constant name="struts.multipart.maxSize" value="10701096"></constant>

package:

  • name:给当前包取一个名字,必须要有的,配置文件中要唯一.
  • extends:不是必须的,会把父包中的配置内容继承下来,通常继承struts系统自带的struts-default,这个package的配置参见struts-default.xml中的定义.
  • abstract:是否是抽象包.
  • namespace:在访问地址时要加的包名.
    • 如果不写,默认认为是”“空字符串,即localhost:8080/动作名
    • “/user”,则访问某个动作地址变为:localhost:8080/user/动作名

这里写图片描述

action:

  • name:给当前动作取一个名称,用于对外提供访问的名称.
  • class:指向对应的动作类.不些话默认是com.opensymph ony.xwork2.ActionSupport.
  • method:该动作对应方法名,如果调用的是ActionSurport类的excute方法,则可以省略此属性的设置,即method属性不指定默认调用的是excute方法.

这里写图片描述

result:

  • name:指定配置逻辑视图名,对应着动作方法的返回值.默认值是:success
    • success:指向一个处理正确的结果视图
    • error:指向一个处理错误的结果视图
    • input:验证失败时需要回到原来的输入界面
    • login:登录失败时会进入的结果视图
    • null:什么都不做,留在当前页面
    • 自定义:自定义返回值
  • type:到达目标的形式.默认值:dispatcher转发
    • chain:转发到一个动作
    • redirect:重定向到一个jsp页面
    • redirectAction:重定向到一个动作
    • stream:指向一个输入流
    • dispatcher:转发到一个jsp页面,默认方式

局部结果视图:
这里写图片描述

全局结果视图:

即在action中没有找到某个返回结果的局部结果视图,则自动去全局结果视图中查找

 <global-results>
            <result name="success">/success.jsp</result>
            <result name="error">/error.jsp</result>
        </global-results>

动作类

继承ActionSupport:[推荐使用]
功能强大,已经实现了Action,还有验证,国际化文本等都可以使用.

动作类中的动作方法编写要求:

public String XXX(){}

动态参数封装

属性驱动

action:

public class UserAction extends ActionSupport {
   private String username;
    private String password;
    public String login(){
        System.out.println("u: " +username+ " ,p: " +password);
    return null;
    }
    public String getUsername() {
        return username;
}
    public void setUsername(String username) {
        this.username = username;
}
    public String getPassword() {
        return password;
}
public void setPassword(String password) {
        this.password = password;
} 
}

jsp:

<form action="${pageContext.request.contextPath}/login1.action">
    <input type="text" name="username">
    <input type="password" name="password">
<input type="submit" value="  "> </form>

模型驱动

action:

public class CustomerAction extends ActionSupport implements ModelDrive
n<Customer> {
    private Customer customer = new Customer();
    public Customer getCustomer() {
        return customer;
    }
    public void setCustomer(Customer customer) {
        this.customer = customer;
    }
    public String login(){
        System.out.println(customer);
        return null;
}
    @Override
    public Customer getModel() {
        return customer;
    }
}

jsp:

<form action="${pageContext.request.contextPath}/login3.action">    
用户名: <input type="text" name="username"><br>
  密码: <input type="password" name="password"><br>
       <input type="submit" value="登录"> </form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值