struts2原理及创建struts工程步骤

struts2原理及创建struts工程步骤

原理:

Struts2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,

而用户需要实现业务控制器和业务逻辑组件。

(1)核心控制器:FilterDispatcher

1.FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。

如果用户请求以action结尾,该请求将被转入Struts2框架处理。

2.Struts2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts2调用名为login的Action来处理该请求。

3.Struts2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,

而class属性决定了该Action的实现类。

4.Struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。

而Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action 的execute方法来处理用户请求。

实例:在eclipse中创建工程的步骤通建经典的servlet步骤一样,具体可参见小编的另一篇博文:http://blog.csdn.net/csdnliuxin123524/article/details/77915367

在此基础上开始我们的步骤:

在lib下引入右图中的所有包:struts2原理及创建struts工程步骤

1,包的下载地址可见百度云链接:链接:https://pan.baidu.com/s/1o7PfYhs 密码:v6ef

右键add  引入所有包。

2,在WEB-INF目录下修改web.xml文件,内容如下:

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  <filter>    <filter-name>struts2</filter-name>    <filter-class>									org.apache.struts2.dispatcher.FilterDispatcher		</filter-class>  </filter>  <filter-mapping>    <filter-name>struts2</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping></web-app>

3,在WebContent目录下建index.jsp和second.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>Insert title here</title></head><body><a href="second.jsp">点此进入到second.jsp页面</a><a href="first.action">点此通过servlet进入到second.jsp页面</a></body></html>

second.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>Insert title here</title></head><body>这是second页面</body></html>

4,见下图

struts2原理及创建struts工程步骤

在src文件夹下创建stuts包,在建First类和struts.xml

Firstclass(可以不用创建):

package struts;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.opensymphony.xwork2.ActionSupport;public class First extends ActionSupport{	/**	 * 	 */	private static final long serialVersionUID = 1L;}

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?><!-- XML声明 --><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><!-- 指定Struts 2配置文件的DTD信息 --><struts><!-- 根节点 -->	<constant name="struts.i18n.encoding" value="gb2312"></constant>	<package name="struts2" extends="jfreechart-default">			<action name="first" class="struts.First"> 			<result name="success">second.jsp</result> 		</action> 	</package>	</struts>

这样就OK了!

整个运作流程就是,本地启动tomcat后,浏览器输入:http://localhost:8080/Struts2
会进入到工程的index.jsp页面,点击第二个链接,会经过web.xml拦截所有请求,链接“<a href=”first.action”>”因为有“.action“请求,会进图到src目录下的struts.xml文件中。然后经过First.class代码的逻辑处理(这里没有做逻辑处理)后,最后成功跳转到second.jsp页面中。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106309.html原文链接:https://javaforall.net

(0)
上一篇 2021年7月18日 上午9:00
下一篇 2021年7月18日 上午10:00


相关推荐

  • MATLAB中画折线图:plot函数的简单用法

    MATLAB中画折线图:plot函数的简单用法使用plot绘制二维图像MATLAB中plot函数常常被用于绘制各种二维图像,其用法也是多种多样,本文仅介绍plot函数的基本用法——使用plot函数绘制二维点图和线图。plot函数的一般调用形式如下:plot(X,Y,LineSpec)其中X由所有输入点坐标的x值组成,Y是由与X中包含的x对应的y所组成的向量。LineSpec是用户指定的绘图样式,主要选项如下:Specif…

    2022年6月9日
    42
  • Web安全 支付逻辑漏洞(不用钱 买任何东西.(也能让商家倒贴钱给我们.))

    Web安全 支付逻辑漏洞(不用钱 买任何东西.(也能让商家倒贴钱给我们.))?我们购买东西正常情况下都是要钱的,如果说平台出现了(支付逻辑漏洞.)那么我们就可以,利用这个漏洞实现不用钱买任何东西,???或者是商家倒贴钱给我们来购买他的东西.(这不学起来吗?)

    2022年6月2日
    30
  • 数字信封

    数字信封1 定义 数字信封是将对称密钥通过非对称加密 即 有公钥和私钥两个 的结果分发对称密钥的方法 数字信封是实现信息完整性验证的技术 数字信封技术使用两层加密体系 2 过程 信息发送方甲信息接收方乙甲通过加密机获取对称密钥 利用对称密钥加密要发送的信息 再使用乙的公钥来加密对称密钥 这样就形成了一

    2026年3月20日
    2
  • 计算机的发展历史_计算器的由来和故事

    计算机的发展历史_计算器的由来和故事本文主要介绍计算机的发展历史。1概述计算工具的演化经历了由简单到复杂、从低级到高级的不同阶段,从“结绳记事”中的绳结到算筹、算盘、计算尺、机械计算机等,它们在不同的历史时期发挥了各自的历史作用,同时也启发了现代电子计算机的研制思想。1889年,美国科学家赫尔曼·何乐礼研制出以电力为基础的电动制表机,用以储存计算资料。1930年,美国科学家范内瓦·布什造出世界上首台模拟电子计算机。…

    2022年8月31日
    3
  • vue组件通讯之$attrs

    vue组件通讯之$attrs使用场景我们会遇到这样的场景,比如对element-ui的el-table组件进行二次开发,但是el-table组件有很多属性比如控制高度的height,传入数据的data还有border、size、fit等一个个的去传显然不大现实,这个使用用$attrs处理起来就会特别优雅。举例子组件:自定义组件对el-table进行封装,用$attrs接收父组件传过来的属性<template&g…

    2022年10月18日
    3
  • 大数据篇:三大指标

    大数据篇:三大指标大数据篇:三大指标上一篇文章中文章讲了如何用服务等级协议(SLA)来评估我们的系统,并讲解了几个常用的SLA指标今天我们来讲分布式系统中另外几个基本概念可扩展性(Scalability)先从我们为什么需要分布式系统说起。原因是我们系统的数据量越来越大,从原来的GB到TB到现在的PB级,单机已经无法胜任这样的工作了。工作中也常有这样的场景,随着业务变得原来越复杂,之前设计的系统无法处理日渐…

    2022年5月10日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号