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;
    }
    
}

处理结果类型:

 

原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/6439310.html