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页面中。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 安全帽识别的系统应用

    安全帽识别的系统应用安全帽识别的原理是用AI技术对工作现场的视频进行实时分析,如果发现工作人员未按要求佩戴安全帽,系统会自动发出警报,在提醒管理人员的同时,系统会自动保存时间、地点及相应的照…

  • ext.apply()_函数evaluate的应用

    ext.apply()_函数evaluate的应用转载网址:http://www.cnblogs.com/yin-jingyu/archive/2011/07/30/2122176.htmlapply的用法:    Ext中apply及applyIf方法的应用apply及applyIf方法都是用于实现把一个对象中的属性应用于另外一个对象中,相当于属性拷贝。不同的是apply将会覆盖目标对象中的属性,而apply

  • DropDownList1_SelectedIndexChanged不执行「建议收藏」

    DropDownList1_SelectedIndexChanged不执行「建议收藏」http://blog.sina.com.cn/s/blog_4ba152030100a6sr.html

  • 【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?

    【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生…面试官开怼面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,…

  • 3.1 代价函数[通俗易懂]

    3.1 代价函数[通俗易懂]3.1代价函数(costfunction)    代价函数有助于将最可能的线性函数与我们的数据相拟合。在线性回归中,我们有一个这样的数据集,m表示训练集样本数,而我们的假设函数,也就是我们用来进行预测的函数,是图中所示的线性函数形式。    接下来,我们引入一些术语,Ɵ0和Ɵ1,这些Ɵi我们将它称作为模型参数,我们要做的就是如何去选择这两个参数。对于不同的Ɵ0和Ɵ1,我们会得到不同

  • jupyter和python的关系_jupyter notebook和python

    jupyter和python的关系_jupyter notebook和python这个问题参见以下文章即可,讲的很全面。核心总结Python就是原生python;anaconda类似第三方集成,方便我们管理,而且自带很多库。如果选择安装Python的话,那么还需要pipinstall一个一个安装各种库,安装起来比较痛苦,还需要考虑兼容性;PyCharm就是一个IDE的角色,和NotePad没什么本质区别。只是大家习惯上,java配合MyEclipse使用,Anaconda…

发表回复

您的电子邮箱地址不会被公开。

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