01 Struts2框架学习(了解一下,已过时)

1.框架介绍

所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面。 

特点:封装了很多细节,程序员在使用的时候会非常简单。

早前,有三大框架struts、hibernate、spring(SSH)

近几年,springmvc、mybatis、spring(SSM) -----主流框架选择方案

曾经经典的『SSH』三驾马车,现在只有Spring还保持活力,Strust和Hibernate都过时了。

strust能做的,spring都能做,而且spring现在的生态很好,比如springboot,springcloud等等。

MVC架构:

M:Model 模型,封装数据。javabean    

V:view   视图,展示界面。jsp     

C:Controller 控制器,控制程序流程。

2.Java SSH框架介绍

  SSH在J2EE项目中表示了3种框架,即 Spring + Struts +Hibernate。 Struts对Model,View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

3.Struts2入门---开发环境的搭建

Struts2是Apache发行的MVC开源框架。注意:它只是表现层web(MVC)框架。

 (1)下载Struts2开发包

http://struts.apache.org

选择课程中提供的2.3.33的版本,解压后如下图所示。

在apps目录中,提供了一个struts2-blank.war

初始学者在项目集成中,导入lib下的所有包即可

(2)第一个Struts2项目

点击next后,创建工程。

工程结构为:

设置Struts2的jar包路径

注意:若报ERROR StatusLogger No log4j2 configuration file found. Using default configuration错误

解决方案:创建log4j2.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="com.opensymphony.xwork2" level="debug"/>
        <Logger name="org.apache.struts2" level="debug"/>
        <Root level="warn">
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>

测试工程是否成功:

创建hello_struts2.jsp,进行测试

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Hello</title>
</head>
<body>
<div align="center">
    <h1>HelloStruts2</h1>
</div>
</body>
</html>

在 index.jsp 中链接一下

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <a href="hello_struts2.jsp">点击前往测试页面</a>
  </body>
</html>

启动tomcat,测试效果。

 Struts2架构图

User created标识的是以后我们经常要写的

4.Struts2第一个案例

struts.xml配置文件相关属性:

  (1)package:表示包
    name:包名,在struts.xml文件不能有相同的包名,包名是惟一
    extends:继承,固定struts-default
    abstract:抽象包,被用于继承,一般在抽象包里不声明action
    namespace:命名空间,访问路径,默认值是空字符串
      可用于模块划分
      要注意:命名空间需要加/斜杠
  (2)action:动作
    name:相当于Servlet的映射路径(@WebServlet)
    class:处理请求的类,相当一个Servlet类
    method:处理请求的方法
      1.public的
      2.返回值必须是String
      3.没有参数
  (3)result:结果,写返回的jsp页面

     name:逻辑视图的名称,对应着动作方法的返回值。默认值是success

     type:结果类型,指的就是用什么方式转到定义的页面。默认是dispatcher  转发(url地址不变)

      result中type的取值有四种类型:

              

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>

    <!--
    package:表示包
            name:包名,在struts.xml文件不能有相同的包名,包名是惟一
            extends:继承,固定struts-default
    action:动作
            name:相当于Servlet的映射路径(@WebServlet)
            class:处理请求的类,相当一个Servlet类
            method:处理请求的方法

    result:结果,写返回的jsp页面
     -->
    <package name="p1" extends="struts-default">
        <action name="hello" class="action.HelloAction" method="sayHello">
            <result name="success">/success.jsp</result>
        </action>
    </package>

</struts>

HelloAction.java

<1>action类的第一种写法

package action;

public class HelloAction {

    public String sayHello(){
        System.out.println("HelloAction的sayHello方法被调用了...");
        //int  i = 10 / 0;
        return "success";
    }
}

<2>action类的第二种写法

写个Action类继承ActionSuport类【推荐使用这种方式】

ActionSupport是实现Action接口的类

package action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction1 extends ActionSupport {
    public String sayHello1(){
        System.out.println("HelloAction的sayHello方法被调用了...");
        return "success";
    }
}

struts.xml文件中的相关配置

<action name="hello1" class="action.HelloAction1" method="sayHello1">
            <result name="success">/success.jsp</result>
        </action>

运行逻辑图:

效果图:

原文地址:https://www.cnblogs.com/luckyplj/p/11288661.html