zoukankan      html  css  js  c++  java
  • 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;
        }
        
    }

    处理结果类型:

     

  • 相关阅读:
    个人作业-Alpha项目测试
    第三次作业
    第二次作业
    第一次作业
    JQuery(一)页面加载,写入文本,对象转换,隐藏显示,基本选择器,层级选择器,基本过滤选择器,表单选择器,class操作,属性操作
    JavaScript(二)
    轮辐广告、简单选项卡
    div层随着页面大小变化相对位置不变、按钮隐藏一半鼠标放上去就出来,不放上去就退回去
    markDown语法详解
    Mybatis中动态SQL语句
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/6439310.html
Copyright © 2011-2022 走看看