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


相关推荐

  • goland激活码最新【2021免费激活】

    (goland激活码最新)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
    53
  • web3j教程:java使用web3j开发以太坊智能合约交易

    web3j教程:java使用web3j开发以太坊智能合约交易

    2021年6月7日
    111
  • java怎样调用oracle存储函数_oracle如何调用存储过程

    java怎样调用oracle存储函数_oracle如何调用存储过程之前给大家介绍了java代码调用存储过程,下面要给大家介绍的就是java当中调用oracle存储过程,一起来看看吧。首先来看一下项目结构:在数据库创建存储过程的脚本,假如,使用的是本地的oracle数据库,那么,就需要开启服务-OracleOraDb11g_home1TNSListener和OracleServiceORCL。实现:输入用户的工号,输出用户名字、薪水以及工作:createorr…

    2022年10月20日
    0
  • haxm device is not found

    haxm device is not foundandriodstudio刚装完,都会忍不住跑一个helloworld~但是AVDManager里的虚拟设备会提示错误:haxmdeviceisnotfound.androidstudio–>Tools–>AVDManager–>+CreateVirtualDevice…–>VirtualDeviceConfiguration–>Phone–>随便点一个–>Next。出现这个问题:EnableVT-xin

    2022年6月28日
    52
  • sql server 2012 报表开发(2) reporting service 中制作分组折叠式报表

    sql server 2012 报表开发(2) reporting service 中制作分组折叠式报表前面我们学习了sqlserver2012如何使用ReportingService2012制作报表,对ReportingService制作报表,有了初步的了解,这里我主要记录一下,如何做一个分组折叠式的报表.1. 创建一个报表tb_Bills.rdl,添加一个数据集2.在当前报表中,添加一个列表3.在当前列表中,添加一个父组。选择需要分组字段的分组依据,

    2022年10月20日
    0
  • 01分布两点分布_两点分布和01分布的区别

    01分布两点分布_两点分布和01分布的区别#–*–coding:utf-8–*–importmatplotlib.pyplotasplt#随机变量x只能取0,1我们称X服从以P为参数的(0-1)分布或两点分布p=

    2022年8月5日
    2

发表回复

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

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