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>

运行逻辑图:

效果图:

01 Struts2框架学习(了解一下,已过时)的更多相关文章

  1. Struts2框架学习(三) 数据处理

    Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...

  2. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  3. Struts2框架学习(一)

    Struts2框架学习(一) 1,Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发.框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2 ...

  4. Java之struts2框架学习

    Java之struts2框架学习 About Struts2 Struts也是一款MVC框架 , Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全 ...

  5. struts2框架学习笔记7:struts2标签

    三大标签: 1.JSP:脚本,为了替代servlet,已过时 2.JSTL:标准标签库(core.format.sql.xml),还未淘汰的只有core库 3.Struts2标签库:由Struts2开 ...

  6. [ SSH框架 ] Struts2框架学习之一

    一.Struts2框架的概述 Struts2是一种基于MVC模式的轻量级Web框架,它自问世以来,就受到了广大Web开发者的关注,并广泛应用于各种企业系统的开发中.目前掌握 Struts2框架几乎成为 ...

  7. [ SSH框架 ] Struts2框架学习之二

    一.Struts2访问Servlet的API 前面已经对 Struts2的流程已经执行完成了,但是如果表单中有参数如何进行接收又或者我们需要向页面保存一些数据,又要如何完成呢?我们可以通过学习 Str ...

  8. [ SSH框架 ] Struts2框架学习之四(自定义拦截器)

    一.Struts2的拦截器 1.1 拦截器概述 拦截器,在AOP( Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截 ...

  9. struts2框架学习之第一天

    day01 Struts2概述 1 什么是框架 试想一下,人与人之间不同之处多,还是相同之处多呢?当然是相同之处多,不同之处少!人都有头,而且头都在脖子上面! 软件之间也是相同之处多,不同之处少,框架 ...

随机推荐

  1. [Codeforces 1265E]Beautiful Mirrors

    Description 题库链接 一共有 \(n\) 个关卡,你初始在第一个关卡.通过第 \(i\) 个关卡的概率为 \(p_i\).每一轮你可以挑战一个关卡.若通过第 \(i\) 个关卡,则进入第 ...

  2. fitnesse如何编辑用例

    1.测试代码: 2.编写用例 (1)新建目录 点击“edit”,编辑内容: !1 测试 * '''[[算法][TestDemo]]''' * '''[[算法2][TestDemo2]]''' 上面的第 ...

  3. HAProxy 2.0 and Beyond

    转自:https://www.haproxy.com/blog/haproxy-2-0-and-beyond/  关于haproxy 2.0 的新特性说明 HAProxy Technologies i ...

  4. [NOI2019]回家路线

    [NOI2019]回家路线 题目大意: 有\(n\)个站点,\(m\)趟车,每趟车在\(p_i\)时从\(x_i\)出发,\(q_i\)时到达\(y_i\). 若小猫共乘坐了\(k\)班列车,依次乘坐 ...

  5. C博客作业

    1.你对网络专业或者计算机专业了解是怎样? 信息化是国企的一个大趋势,目前正是红火的时候. - 网络是信息化必不可少的的基础和平台,随着信息化的进步,网络也必将水涨船高. - 我认为网络方向主要学的是 ...

  6. SuperHyperMarket(优先队列+重载)

    SuperHyperMarket(优先队列+重载) 具体见代码注释 /* */ #include <iostream> #include <cstring> #include ...

  7. manjaro AwesomeWM 上使用双显示器

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/dual_monitor_manjaro_awesome 安装ma ...

  8. element ui分页器的使用

    <el-pagination layout="total, prev, pager, next, jumper" :current-page="pageInfo.p ...

  9. Net core学习系列(二)——Net Core项目文件简介

    一. ASP.NET Core 项目文件夹解读 ASP.NET Core 1.0 发布以来,相较于传统项目编码发布的行为,新项目中的操作已经有了很大的变化,如解析依赖,选择运行平台和Runtime等等 ...

  10. 第07组 Beta冲刺(4/5)

    队名:摇光 队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:已经完成代码编辑器,暂时没有其他任务 展示GitHub当日代码/文档签入记录:(组内共 ...