Struts2学习

Struts2学习过程

初衷:因为只学习过Springmvc,Struts2久仰大名却没有接触过,抱着这个想法来学习的Struts2。在另外一方面来讲,这个框架也确实需要Javaer去掌握,以上。

    1.什么是Struts2,它是个什么,我们为什么要放弃快乐的游戏来学这个框架?

    Struts2之前还有一个Struts1,但是现在没怎么用,那1肯定是不如2好了。Struts2与之前一个版本1区别较大,2是由WebWork与Struts1的基础上发展来的,但是总体上是基于WebWork的,所以你可以看见Struts2与之前的WebWork变化差异小,但却与Struts1差异很大。那么不管是Struts1与WebWork,还是Struts2,它们都是web框架。

    Struts2的百度定义:Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。

    2.怎么去使用它呢?即如何配置Struts2,又到了我们最喜欢的HelloWorld环节。

  1.     打开你最心爱的eclipse,创建一个动态web项目,然后我们需要导入必须的几个jar包,如下图:

        

        Struts2本质是一个Servlet,Servlet的配置都是在web.xml中,需要先配置Struts2的核心过滤器

      <!-- 创建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>

        2.现在所有的请求Struts2这位大佬都要过问一下,接着让我们创建一个HelloWorldAction

package com.test.struts;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport{
	@Override
	public String execute() throws Exception {
		System.out.println("我访问到了这里");
		return SUCCESS;
	}
}

    然后创建struts.xml核心配置文件,文件存放在src根目录下,

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="test" namespace="/" extends="struts-default">
    	<action name="helloworld" class="com.test.struts.HelloWorldAction" method="execute">
    		<result name="success">/HelloWorld.jsp</result>
    	</action>
    </package> 
</struts>

    创建一个jsp页面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>HelloWorld</h1>
</body>
</html>

    让我们启动tomcat,来一次美妙的HelloWorld,访问结果:

    3.已经可以走一个简单的HelloWorld流程了,那么Struts2的执行流程是怎么样的?

        1.服务器启动加载web.xml,创建Struts2的核心过滤器。

        2.执行过滤器的init方法,顺序读取struts-default.xml,struts-plugins.xml,struts.xml(用户自定义)。

        3.每次请求访问时创建action实例,在访问业务方法之前访问拦截器,接着访问业务方法。

    4.用户自定义的核心配置文件struts.xml中的详细配置定义

        struts标签下的子标签
        1.package标签
            包标签,类似于Java包。包含的属性有:name,namespace,extends,abstract...
            name:标签名,包的唯一标识,package不能重复命名
            namespace:命名空间,此处的路径相当于"localhost:8008/项目名/"项目名后的"/",一般为"/"
            extends:继承包,要实现struts的基本功能我们一般要继承struts-default包,该包是一个抽象包
            abstract:标识该包是否为抽象包,value值为true的话,该包下不能存在action的定义
        2.include标签
            用来包含其他配置文件,因为一个项目中所有的action定义都写在一个struts.xml中的话,那量就十分巨大了,
        用来区分模块更好,<include file="info.xml"></include>例如与info相关的action都在info.xml中定义,这样
        就明了很多。
       3.constant标签
            标识struts的常量,格式为<constant name="" value="" />
            修改struts的访问后缀:<constant name="struts.action.extension" value="action,banjiao,"></constant>
       这样访问后缀可以识别action,空格,banjiao三个
            修改struts编码:<constant name="struts.i18n.encoding" value="UTF-8"></constant>
       4.bean标签先留着哈哈
        package标签下的
            1.非常重要的action的标签
                开发者最直接面对的定义,action业务处理类包含的属性:name,class,method...
                name:action的名字,也是url访问时在namespace后面的路径
                class:action类的全限定名,需要根据该值反射创建action实例
                method:标识访问该action的哪一个方法名
            action标签下的result标签
                包含的属性name,type
                name:业务方法返回的string所匹配,返回相应的结果
                type:返回类型,redirect重定向,dispatcher转发(默认值),redirectaction重定向到action,stream返回流        
         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值