学习笔记struts2_day01

1: struts2的概述
2:struts2中的第一个程序

3:struts2 中的配置文件

4:Action类的编写及Action类中方法的编写及访问

为什么要学习Struts2?
1、传统代码的弊端:在Servlet里存在获取请求参数,页面跳转代码冗余的问题。
2、struts2的优势:可以解决Servlet里获取请求参数、页面跳转代码用于的问题。


Struts2概述
我们用一句话概括:Struts2是一个基于MVC设计模式的WEB层框架。
MVC设计模式
MVC,全名是Model View Controller,是模型(Model)-视图(View)-控制器(Controller)的缩写,是一种软件设计模式,或软件设计思想。
1、Model:数据模型,用来处理数据,一般是一个实体类,例如User类;
2、View:视图,用来显示界面,可以是JSP或Html;
3、Controller:控制器,用来决定哪个界面来展示数据模型;
MVC设计模式其实是一种软件设计思想,可以把设计思想理解成接口;
MVC设计模式有多种试想方式(JSP+Servlet+JavaBean就是其中的实现方式之一)但是这种方式方式不是最好的MVC的实现。
Struts2框架就是一种更好的MVC设计模式的试想方式。
Struts2在项目中的角色
Struts2框架工作在WEB层,解决请求与响应的问题
JavaEE开发规范规定,一个Java web项目应该要分为三层:
1、WEB层:页面数据显示、页面跳转调度;
2、业务层:业务处理和功能逻辑、事务控制;
3、持久层:数据存取和封装、和数据库打交道;
注意(MVC和javaEE三层架构规范不是同一个概念,一定要区分开来)


Struts2的软件开发包
官网地址:http://struts.apache.org/
Struts2快速入门(重点)
Struts2环境搭建
1、创建JavaEE工程,引入必备的jar包
2、在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>
3、在类的根路径下创建一个struts.xml(不要去改文件名)的文件,并导入约束


Struts2入门案例
案例需求
需求:使用Struts2编写一个简单的请求与跳转的功能:在浏览器中输入请求地址,经过struts2框架,跳转到success.jsp页面。
1、编写Action类,负责接收用户请求,并处理请求
public class HelloAction extends ActionSupport {
/**
* Action就相当于对Servlet的一个封装
*
*/
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
//调用业务的代码
System.out.println("hello请求进来了");
//框架获取到该方法的返回值,返回值对应的要跳转到页面
return "success";
}
}
2、在struts.xml中配置HelloAction类
<?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="default" namespace="/" extends="struts-default">
<!-- 
name:Action类的名字,具有唯一性,页面上通过name来访问Action类
-->
<action name="hello" class="com.itheima.action.HelloAction">
<!-- 配置结果集 :name属性的值一定要与execute方法的返回值一致-->
<result>
/success.jsp
</result>
</action>
</package>
</struts>
3、在WebContent下新建success.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
   <h1>这是第一个struts2</h1>
</body>
</html>
4、启动Tomcat测试访问结果

Struts2的执行过程

Struts2的内部运行原理


Struts2配置文件详解

配置文件的分类

1、框架内置的配置文件(有三个)
   default.properties:在struts2-core.jar的org.apache.struts2包中,存放了Struts2所有的常量信息
   struts-default.xml:在struts2-core.jar中,定义了Struts2框架底层的一些bean,struts-default抽象包,拦截器、结果集
   struts-plugin.xml:可有可无,在某个插件的jar包中,定义了插件中的bean、action等信息
2、自定义的配置文件(有三个)
  struts.xml:是strust2的核心配置文件,位于工程的src目录下,主要用于配置用户自定义的Action类
struts.properties:可有可无,位于工程的src目录下,用户可以添加,也可以不添加,用于配置Sturts2的常量
  web.xml:在WEB-INF下,也可以配置Struts2的常量


配置文件加载的顺序
Struts2框架中的六个配置加载顺序如下:
default.properties--->struts-default.xml--->struts-plugin.xml--->struts.xml--->struts.properties--->web.xml
补充:从源码的角度来分析各种配置文件的加载顺序
(1)Struts2项目启动时,会调用过滤器的init方法完成初始化;(参考StrutsPrepareAndExecuteFilter的第57行代码,InitOperations第74行代码)
(2)初始化时,先加载default.properties文件;(参考Dispatcher类第483行代码)
(3)再加载,struts-default.xml、struts-plugin.xml、struts.xml文件;(参考Dispatcher类第484行代码)
(4)再加载struts.properties;(参考Dispatcher类第485行代码)
(5)再加载web.xml配置的初始化参数;(参考Dispatcher类第486行代码)


核心配置文件struts.xml(重点)
constant标签
作用:
用于修改struts2中的常量
属性:
name:指定常量的key
value:指定常量的值
用法:
<!-- 开启开发者模式 -->
<constant name="struts.devMode" value="true"></constant>
开启开发者模式的好处:
(1)当发生异常后,可以在页面上看到详细的异常信息
(2)当更改了配置文件,自动重载配置文件,不需要重启服务,提高开发效率


package标签
作用:
在struts2的配置文件中引入了面向对象思想,使用了分包管理。易于管理Action类。便于模块化开发Action类。
属性:
name:
包的名称。必须写。且必须唯一。
extends:
一般情况下需要继承struts-default包,但不是必须的。不过如果不继承的话,将无法使用struts2提供的核心功能。struts-default.xml中定义着struts-default这个包。而struts-default.xml是在我们的struts.xml加载之前加载。
abstract:
把包声明为抽象包,抽象包就是用来被继承的。只要是没有<action>元素的包,就可以声明为抽象包。
namespace:
名称空间。它的作用是把访问的URL按照模块化来管理。
名称空间的写法:
 一般以/开头
 当我们指定了名称空间之后,访问的URL就变成了:
名称空间+action标签的name属性取值
 例如:
/n1/hello.action
  /customer/addCustomer.action
  /customer/editCustomer.action
  /linkman/findAllLinkMan.action
  /linkman/removeLinkMan.action
action标签
作用:
配置Action类。
属性:
name:指定的Action类的访问名称。注意此处不能有后缀。必须唯一。
class:指定的是Action类的全限定类名。
method:指定的是Action中方法名称
Action的编写和调用访问
1:实现Action接口
2:继承ActionSupport父类,重写execute方法(重点)
3:写一个POJO类,在类里提供execute方法
Action的方法编写和调用执行
问题:用户模块有用户的新增、用户的查询、用户的删除、用户的修改,需要编写4个Action类,为每个Action类在struts.xml作配置.需要编写很多个Action类,struts.xml配置文件很庞大。
可以这样来解决:
在Action类里编写多个方法,每个请求都会执行该Action类里对应的方法,这样,减少Action类的个数,降低struts.xml文件的配置量。
1.Action的方法编写格式
 在Action中自定义方法,需要满足一下特征:
 修饰符为public
 返回类型为String
 无形参
 异常可选


2.通过设置method属性调用Action中的方法
3.通配符的使用

4.动态方法调用

作用:允许通过action名字!方法名来访问Action类中的方法。
需要把把动态方法调用的开关打开,默认是关闭的。
<!-- 允许动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值