欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Struts2学习

程序员文章站 2022-07-04 18:51:52
...

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学习Struts2学习

        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,访问结果:

Struts2学习

    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返回流        
         

相关标签: Struts2 Java