ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Struts2框架入门学习

2021-03-19 20:34:40  阅读:171  来源: 互联网

标签:String 框架 jar struts2 Struts2 Action public 入门


目录标题

Struts2简介

Struts2是一种基于MVC模式的轻量级Web框架,Struts2是Struts1的下一代产品,是在Struts1和WebWork技术的基础上进行合并后的全新框架

struts2框架其实是对javaWeb表现层的MVC作了优化

Struts2的优点

1、项目开源,使用及拓展方便,天生优势。
2、提供Exception处理机制。
3、Result方式的页面导航,通过Result标签实现页面跳转。4
4、通过简单、集中的配置来调度业务类,方便修改。
5、提供简单、统一的表达式语言来访问所有可供访问的数据。
6、提供标准、强大的验证框架和国际化框架。
7、提供强大的、可以有效减少页面代码的标签。
8、提供良好的Ajax支持。
9、拥有简单的插件,可以扩展Struts2框架。
10、拥有智能的默认设置,不需要另外进行繁琐的设置。

Struts2入门案例

第一步:下载jar包

下载地址:https://struts.apache.org/

选择struts-2.3.37-all.zip 下载
在这里插入图片描述

下载解压后,出现以下界面,struts-2.3.37的目录结构:
在这里插入图片描述

由于struts的jar包并不全部需要,找到apps目录下struts2-blank.war

在这里插入图片描述
解压struts2-blank.war,将示例程序lib目录下的jar包添加到我们项目中即可,此版本的Struts2项目必需的13个jar包。
在这里插入图片描述

第二步:创建项目导入jar包

创建项目,将上面的13个jar包粘贴到lib中,然后build path,会在Web App Libraries中看到
在这里插入图片描述

第三步:配置web.xml

编辑web应用的web.xml配置文件,配置struts2的核心拦截器。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
		 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
		 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
		 id="WebApp_ID" version="3.0">

  <display-name>FirstStruts2</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
    <!--配置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>
</web-app>

第四步:创建Action类

有三种方法
方法一: 只需要类中有一个固定的方法,不需要实现或者继承任何接口或者父类

代码如下:

package cn.itcast.action;

public class HelloWorldAction {
    public String execute (){
    	return "success";
    	
    }
}

方法二:实现指定的一个接口:com.opensymphony.xwork2.Action

这个接口中只有一个抽象方法 public abstract String execute()throws Exception;
同时还有5个String类型的静态属性:ERROR SUCCESS INPUT NONE LOGIN

 public static final String SUCCESS = "success";
 public static final String NONE = "none";
 public static final String ERROR = "error";
 public static final String INPUT = "input";
 public static final String LOGIN = “login”;

代码如下:

package cn.itcast.action;

import com.opensymphony.xwork2.Action;

public class HelloWorldAction implements Action{
    public String execute ()throws Exception{
    	return SUCCESS;
    }
}

方法三: 继承一个指定的父类:com.opensymphony.xwork2.ActionSupport
ActionSupport类本身实现 了Action接口,是Struts2中默认的Action接口的实现类,所以继承ActionSupport就相当于实现了Acton接口。

代码如下:

package cn.itcast.action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport{
    public String execute ()throws Exception{
    	return SUCCESS;
    }
}

第五步:创建struts.xml文件

引入dtd约束,该代码可以在WebContent\WEB-INF\lib\struts2-core-2.3.37.jar找到
在这里插入图片描述

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

设置启动开发模式,编辑配置文件不再需要重新发布

<constant name="struts.devMode" value="true"></constant>

配置action

<package name="hello" namespace="/" extends="struts-default">
       <!-- 配置Action -->
       <action name="helloWorld" class="cn.itcast.action.HelloWorldAction">
            <!-- 配置result结果页面跳转 -->
            <result name="success">/success.jsp</result>
       </action>
      
    </package>

完整代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 指定Struts2配置文件的D2T信息 -->
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!--启动开发模式,编辑配置文件,不用再重新发布 -->
    <constant name="struts.devMode" value="true"></constant>
    <!-- Struts2的Action必须放在指定的包空间下定义 -->
    <package name="hello" namespace="/" extends="struts-default">
       
       <action name="helloWorld" class="cn.itcast.action.HelloWorldAction">
            <result name="success">/success.jsp</result>
       </action>
      
    </package>
</struts>

第六步:创建jsp文件

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    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>Struts2入门案例</title>
</head>
<body>
   <h1>Struts2入门案例</h1>
  <a href="${pageContext.request.contextPath }/helloWorld.action">Click me!</a>
</body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    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>Struts2跳转页面</title>
</head>
<body>
  <h1>Struts2跳转页面成功</h1>
  
</body>
</html>

第七步:部署项目

发布项目,点击超链接
在这里插入图片描述
跳转成功
在这里插入图片描述

Struts2处理流程

(1)用户在客户端发出HTTP请求

(2)然后请求被核心过滤器StrutsPrepareAndExecuteFilter拦截

(3)核心过滤器将请求转发到Action映射器,Action映射器负责识别当前的请求是否需要交由Struts2处理。

(4)Action映射器返回需要struts2处理的信息,StrutsPrepareAndExecuteFilter会创建一个Action代理

(5)Action代理并不知道执行哪一个Action,它会向配置管理器询问调用哪一个Action,配置管理器会从struts.xml读取我们配置的Action信息。

(6)Action代理创建相关请求的Action对象,调用相关的方法之前,struts2的一系列拦截器会帮我们做一些操作,例如获取请求参数等。

(7)然后调用execute方法根据返回的字符串去匹配相应的页面,

(8)页面可以获取一些页面模板,然后生成最终页面,再倒序的执行拦截器的后续操作

(9)最后生成HTTP响应内容

在这里插入图片描述

标签:String,框架,jar,struts2,Struts2,Action,public,入门
来源: https://blog.csdn.net/qq_46150940/article/details/114991748

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有