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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最低公共祖先java_洛谷是啥

    最低公共祖先java_洛谷是啥原题链接题目描述如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。输入格式第一行包含三个正整数 N,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。接下来 N-1N−1 行每行包含两个正整数 x, yx,y,表示 xx 结点和 yy 结点之间有一条直接连接的边(数据保证可以构成树)。接下来 MM 行每行包含两个正整数 a, ba,b,表示询问 aa 结点和 bb 结点的最近公共祖先。输出格式输出包含 MM 行,每行包含一个正整数,依次为每一个询问的结果。输入

    2022年8月9日
    6
  • 普林斯顿结构与哈佛结构的相同之处_哈佛结构的特点

    普林斯顿结构与哈佛结构的相同之处_哈佛结构的特点   冯.诺依曼结构,又称为普林斯顿结构。是一种经典的体系结构,有CPU,总线,外部存储器组成。这种体系结构采用程序代码存储器与数据存储器合并在同一存储器里,但程序代码存储器地址与数据存储器地址分别指向不同的物理地址。程序指令宽度与数据宽度一样。数据总线和地址总线共用。   但是随着CPU设计的发展,pipeline的增加,指令和数据的互斥读取很影响CPU指令执行的scale程度。后来,哈…

    2022年10月4日
    2
  • linux重启下mysql数据库命令_linux重启mysql数据库命令

    linux重启下mysql数据库命令_linux重启mysql数据库命令Linux 中难免会对数据库进行操作 下面由学习啦小编为大家整理了 linux 重启 mysql 数据库命令的相关知识 希望对大家有帮助 linux 重启 mysql 数据库命令 1 使用 service 启动 servicemysql 5 5 7 版本命令 linux 重启 mysql 数据库命令 2 使用 mysqld 脚本启动 etc init d mysq

    2025年9月13日
    3
  • window.location.Reload()和window.location.href 区别

    window.location.Reload()和window.location.href 区别

    2021年10月31日
    46
  • BigDecimal.setScale()方法实用技巧

    BigDecimal.setScale()方法实用技巧方法使用scale()方法用于格式化小数点setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3setScale(1,BigDecimal.ROUND_UP)进位处理(无论小数如何),2.35变成2.4setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4(目前最常用的金额处理方法…

    2022年10月20日
    3
  • Linux安装mysql5.7.26 –(傻瓜版3分钟搞定)

    Linux安装mysql5.7.26 –(傻瓜版3分钟搞定)前言在这之前的一天时间里,我全网搜mysql的各种安装方式,还有版本不同带来的问题,会发现在Mac或者在linux上安装5.7一下版本时,出现的问题会少很多,尤其是拿着dmg文件在Mac安装就是1分钟的事,但是在linux安装5.7时出现了不少的问题,出现的问题各式各样,大家安装时碰到问题了,一定要找你当前版本下的解决方式。严格按照本文步骤可以顺利安装,这也是我连续在三…

    2022年6月5日
    36

发表回复

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

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