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

    运行逻辑图:

    效果图:

  • 相关阅读:
    如何在 ASP.NET 中(服务器端)主动清除(HTTP内容响应时)浏览器中的 Cookies 数据
    修复 dji spark 的 micro sd/tf 存储卡里不能正常播放的视频文件
    在 Windows 7 中安装 .NET Framework 时遇到错误:无法建立到信任根颁发机构的证书链
    【转】在 Windows 10 下,配置 Kinect v2 可用于 Windows Hello 验证身份
    安装SQL Server提示“等待数据库引擎恢复句柄失败”
    [转]如何禁止 IIS 在 C:WindowsSystem32LogFilesHTTPERR 中生成日志文件
    Kinect v2 记录
    处理 ASP.NET 中的异常:无法在发送 HTTP 标头之后进行重定向。
    在 Windows Server 2008 中部署带 SignalR 的网站出错
    ( ̄▽ ̄)" 关于河北ETC记账卡的默认密码
  • 原文地址:https://www.cnblogs.com/luckyplj/p/11288661.html
Copyright © 2011-2022 走看看