为了账号安全,请及时绑定邮箱和手机立即绑定

Struts2入门

  • MVC。。。。。


    查看全部
    0 采集 收起 来源:MVC模式简介

    2019-05-24

  • 处理结果类型——type属性(result标签的属性)

    type的默认值为dispatcher,这个类型支持JSP视图技术(跳转到相应JSP)。

    struts2支持多种视图技术,例如JSP、Valocity(模板引擎)、FreeMarker(模板引擎)等。

    struts2-core核心包:struts-default.xml有个包声明了返回的结果类型,

    chain:链式结果类型,将action和另外一个action链接起来。

    dispatcher:相当与forward服务器内部转发。

    redirect和redirectAction:相当于请求重定向,重要问题——>重定向会丢失请求参数。

    plainText:显示某一界面的原始代码。

    stream:一般用于文件的下载。




    查看全部
  • 处理结果类型(处理结果是通过在struts.xml使用<result/>标签配置结果)

    根据位置的不同,分为两种结果:

    局部结果:将<result>标签作为<action/>元素的子元素来处理。

    全局结果:将<result/>作为<global-result/>元素的子元素的来处理,<global-result/>相当于公共的处理结果集。

    例如:<package name="">

    <global-results>

          <result name="">..</result>

          <result  name="">..</result>

    <global-results>

    </package>

    <result>标签的子元素<param name="loaction" parse="">resource</param>:

    name属性的location:定义了该视图对应的实际视图资源。

    parse属性:是否可以在实际视图名字中使用OGNL表达式,struts默认是true。

    OGNL:Object-Graph  Navigation  Language,很强大的表达式语言。

    ${#request.path获取值},前提是已经对request存入值。(可以在struts.xml中使用,也可以在JSP中使用。(实际项目中不是很常用)


    查看全部
  • 处理结果类型

    struts2处理流程

    用户请求(前提在web.xml中配置拦截,通过路径)——>Struts框架(通过struts.xml配置)——>控制器Action(返回string类型逻辑视图字符串)——>Struts框架(通过result标签)——>视图资源。

    Struts1返回结果类型:ActionForward。

    Struts2返回结果类型:String(提供代码复用性,有利于框架分离)。

    result标签带/和不带/的区别

     带/表示项目的上下文路径。

    不带/表示执行action的namespace指定的路径。

    处理结果类型(com.opensymphony.xwork2.Action)

    SUCCESS:Action正确的执行返回,返回相应试图,success是name属性的默认值。

    NONE:表示Action正确的执行完成,但并不返回任何视图。

    ERROR:表示Action执行失败,返回到错误处理视图。

    LOGIN:Action因为用户没有登陆的原因没有正确执行,将返回该登陆视图,要求用户进行登陆验证。

    INPUT:Action的执行,需要从前端界面获取参数,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回到该视图。


    查看全部
  • 处理结果类型(com.opensymphony.xwork2.Action)

    INPUT:Action的执行,需要从前端界面获取参数,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回到该视图。

    自动跳转到input界面方式:

    1、传入的参数类型转换错误,自动跳转INPUT界面(int——>String)

    举例:前端输入的数据被赋值给实体类时类型不一致。

     2、校验时,调用的this.addFieldError(fieldName,errorMessage)它是添加表单的错误,这里面有值,如果被执行,代表校验不通过,也会自动跳转INPUT界。

    如果不想手动返回INPUT,则要把代码写在validate()方法里。

    user.getUsername()==null和"".equals(user.getUsername())这两个条件判断的区别?

    因为未经第一个判断直接进行第二个判断,当用户名为null时会发生空指针异常

    第一个判断用户名是否为null(空)
    第二个判断用户名是否为""(空字符串)

    ""并不等于null


    查看全部
  • ServletAPI:HttpServletRequest、HttpServletResponse,和ServeltContext对应JSP内置对象为Request、Response、Application(Servlet可以直接调用HttpServletRequest和HttpServletResponse,因为doGet、doPost方法)。

    Struts:Struts不提供ServletAPI耦合,Struts的Action的execute方法不存在任何参数。

    Struts提供的三种访问ServeltAPI方式:

    方式一:ActionContext(上下文类,通过它可以获得servletAPI ,所有的对象都是以Map进行存储的)。

    方式二:实现***Aware接口。

    方式三:ServletActionContext(与方式一相似)。

    查看全部
  • 动态方法调用:解决一个Action对应多个请求,以免Action太多。

    方法一:指定method属性。

    编写多个action标签,编写多个name和method属性。

    方法二:感叹号方式。(官方不推荐

    步骤1:开启常量值——<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

    步骤二:<action>标签里不写method属性,访问方式——http://localhost:8080/项目名/action名+!+方法名.action

    方法三:通配符方式。(官方推荐使用


    查看全部
    • 导入包

    • 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>*.action</url-pattern>
      </filter-mapping>
    • .src下创建struts.xml

    <struts>
        <package name="default" namespace="/" extends="struts-default">
            <action name="helloworld" class="com.action.HelloWorldAction">
            <result>/result.jsp</result>
            </action>
        </package>
    </struts>
    • 创建action类


    public class HelloWorldAction extends ActionSupport {
        @Override
        public String execute() throws Exception {
            System.out.println("HelloWorldAction");
            return SUCCESS;
        }
    }


    查看全部
  • Struts2动态方法调用

      1. 通过method 指定方法

      2. 使用!  例如: http:localhost:8080/Struts/helloworld!add.action

         必须设置<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

     3.使用通配符 * (推荐使用)

       例如:<action name="helloworld_*_*" method="{1}" class="xxx">

              <result name="{1}">{1}.jsp</result>

        </action>

    查看全部
  • MVC模式

    查看全部
    0 采集 收起 来源:MVC模式简介

    2019-03-19

  • struts.xml里标签package里元素必须按照一定的顺序排列:

    result-types
    interceptors
    default-interceptor-ref
    default-action-ref
    default-class-ref
    global-results
    global-exception-mappings
    action*(就是所有的action放到最后)  

    查看全部
  • struts2.5 为了增加安全性,在 struts.xml 添加了这么个属性:<global-allowed-methods>regex:.*</global-allowed-methods>

    <package name="default" namespace="/" extends="struts-default">
       <global-allowed-methods>regex:.*</global-allowed-methods>
     <action name="helloworld" class="com.imooc.action.HelloWorldAction">
          <result>/result.jsp</result>
          <result name="add">/add.jsp</result>
          <result name="update">/update.jsp</result>
     </action>


    查看全部
  • 版本:struts-2.5.16
    1.代码:<!DOCTYPE struts PUBLIC
       "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
       "http://struts.apache.org/dtds/struts-2.5.dtd">
    2.路径调整了:web.xml包路径
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    3.多导个log4j个jar包

    查看全部
  • 第三步里 的request 是实现了 ServletRequestAware里的setServletRequest方法

    具体如下

    @Override
    public void setServletRequest(HttpServletRequest arg0) {
    // TODO Auto-generated method stub
    request = arg0;
    }


    查看全部
  • struts2工作原理

    查看全部

举报

0/150
提交
取消
课程须知
小伙伴们,学习本课程前需要具备Java Web基础,熟悉JSP和Servlet。
老师告诉你能学到什么?
1、能够对Struts2框架有更深入的了解 2、能够独立编写Struts2程序

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!