• Struts2 入门


    1.Struts2

      Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。

    2.环境搭建

    • 导入jar包
    • 编写Struts2的配置文件

    • 在web.xml中加入Struts2MVC框架启动配置

    3.编写Struts2程序

    • 导入struts2 jar包(8)
    • 编写web.xml 配置Struts2核心控制器

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

    • 创建自定义控制器(创建业务控制器)

    public class FirstAction implements Action {
    @Override
    public String execute() throws Exception {
    if("hello".equals(username)){
    message="hi";
    }
    return SUCCESS;
    }

    • 配置struts.xml (配置处理结果对应的响应视图给用户)

    <struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <package name="default" namespace="/" extends="struts-default">
    <action name="index" class="com.kawa.action.FirstAction">
    <result name="success">index.jsp</result>
    </action>
    </package>
    </struts>

    • 测试(测试页面index.jsp)

    <body>
    <div>
    <s:property value="message" />
    </div>
    <form action="index" method="post">
    username:<input name="username" /><br/>
    <input type="submit" value="提交" />
    </form>
    </body>

    4.Struts2的执行过程及原理

    用户发起请求 → StrutsPrepareAndExecuteFilter核心控制器 → interceptor拦截器
    → Action类中 execute → result 结果页面 →响应

    Struts2是基于MVC设计模式实现的Web应用框架
    配置 web
    <filter>
    //配置核心Filter的名字
    <filter-name>struts2</filter-name>
    //配置核心Filter的类名
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

    </filter>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    //要拦截的URL,/*指拦截所有用户
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    配置 struts.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    提示:当设置该参数为GBK时,相当于调用HttpServletRequest的setCharacterEncoding方法. >
    <constantname="struts.i18n.encoding"value="UTF-8"/>

    <packagename="default"namespace="/"extends="struts-default">
    没有找到页面时,默认请求这个配置
    <default-action-ref name=”action”></default-action-ref >
    <actionname="action"class="com.java.action.HelloAction">
    <result>/error.jsp</result>
    </action>

    <actionname="hello"class="com.java.action.HelloAction">
    <resultname="success">/success.jsp</result>
    </action>
    </package>
    <packagename="default"namespace="/"extends="struts-default">
    <actionname="login"class="com.java.action.HelloAction" method=”login”>
    <resultname="success">/success.jsp</result>
    </action>
    <actionname="register"class="com.java.action.HelloAction" method=”register”>
    <resultname="success">/success.jsp</result>
    </action>

    </package>

    </struts>
    Hello对应from提交的name
    Success对应Action返回的字符串


    --jsp
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <div>
    <s:propertyvalue="message"/>
    </div>
    <formaction="index"method="post">
    username:<inputname="username"/><br/>
    <inputtype="submit"value="提交"/>
    </form>


    --开发控制层Action→struts.xml管理
    作用:

    • 封装工作单元
    • 数据转移的场所
    • 返回结果字符串

    类 implements Action
    private String name=””
    private String message””;
    get set

    public String execute() {
    this.setMessage(“Hello!”+this.getName);
    return “successss”
    }

    --解耦访问sevletAPI
    Map<String,Object> session = null;
    Session = ActionContext.getContext().getSession();
    Session.put(“user“,name)
    将name保存到session
    sessionScope:在session范围内获取
    Jsp页面获取${sessionScope.user}

    --耦合访问sevletAPI
    HttpSession session = null;
    Session = ServletActionContext,getRequest().getSession();
    Session.getAttribute(“user”,name);

    --数据校验
    类 extends ActionSupport{

    Public void validate(){
    If(name.length()==0){
    This.addFieldError(“name”,”用户名不为空”)
    }
    }
    }
    有以上错误return “input;”
    Jsp页面显示<s:fielderrorfieldname=”name”>
    Fieldname不加取所有

    Stuts.xml配置
    <result name=”input”>login.jsp</result>


    --UI标签 (表单标签,非表单标签)
    <form theme=simple0></form>

    --常用标签(控制标签,数据标签)
    <s:iftest=“sex==1”></s:if>


    <s:iterator value=”遍历集合对象” status=“st“ id=”user”>
    <s:property value=”user”><ber>
    </s:iterator>
    --不写id时property不写value
    <s:iterator value=”遍历集合对象” status=“st“>
    <s:property><ber>
    </s:iterator>



  • 相关阅读:
    java Semaphore的介绍和使用
    java CyclicBarrier的介绍和使用
    java CountDownLatch 使用介绍
    android模拟器不能上网设置
    计算几何题集
    BZOJ1004: [HNOI2008]Cards
    BZOJ1029: [JSOI2007]建筑抢修
    BZOJ1037: [ZJOI2008]生日聚会Party
    BZOJ1083: [SCOI2005]繁忙的都市
    Java开发笔记(一百一十四)利用Socket传输文本消息
  • 原文地址:https://www.cnblogs.com/QQW-HH/p/7644475.html
Copyright © 2020-2023  润新知