Struts2的运行机制简介
1、客户端通过URL请求tomcat
2、URL找到对应站点的WEB.xml 发现里面有 struts2配置
3、执行StrutsPrepareAndExecuteFilter类的init方法
4、在init方法中,找到 struts.xml 文件
5、解析 struts.xml文件,根据URL找到对应的类及执行的方法(暂时命名为RunClass)
6、方法会返回一个String
7、在 struts.xml中,根据返回的String ,返回给客户端页面JSP内容
(备注:在返回的JSP中,可以使用RunClass类中的成员变量,直接引用变量名即可 <s:property value="str" /> str即为变量名)
相关配置及代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <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>
web.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="test" namespace="/np" extends="struts-default">
<action name="hello" class="test.HelloAction" method="hello">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>
struct.xml
package test;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport {
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
private String str = "";
public String hello() {
this.str = "hello!!!";
return "success";
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
HelloAction.java
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!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>Test</title>
</head>
<body>
<h1>
<s:property value="str" />
</h1>
</body>
</html>
hello.jsp
Struts2的运行机制简介的更多相关文章
- struts2运行机制
struts2是web应用中一个常用的mvc框架,下面探讨一下其内部运行机制: 1.从客服端浏览器输入的url后,客服端通过http协议发送一个请求到服务器(tomcat),Tomcat收到这个请求之 ...
- 小学生之浅谈Struts2与struts1的运行机制
Struts1工作原理图: 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(s ...
- 01_日志采集框架Flume简介及其运行机制
离线辅助系统概览: 1.概述: 在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集.结果数据导出. 任务调度等不可或缺的辅助系统,而这些辅助 ...
- JVM学习(1)——通过实例总结Java虚拟机的运行机制
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms ...
- (视频) 《快速创建网站》2.1 在Azure上创建网站及网站运行机制
现在让我们开始一天的建站之旅. 本文是<快速创建网站>系列的第2篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http:// ...
- ARP协议格式、ARP运行机制入门学习
相关学习资料 http://baike.baidu.com/view/149421.htm?fromtitle=ARP%E5%8D%8F%E8%AE%AE&fromid=1742212& ...
- IPC 机制简介
IPC 机制简介 概述 在Unix早期发展中,做出重大贡献的两大主力Bell实验室和伯克利大学(BSD)在IPC(InterProcess Communication)方面的侧重点有所不同.前者对Un ...
- Struts2的运行原理和运行与原理
Struts2 struts2的流程图 运行机制 1.客户端发送请求.通过ActionContextLoader调用FilterDispatcher(struts) 2.FilterDispatche ...
- struts2的工作机制
struts2的工作机制 原文:http://eoasis.iteye.com/blog/642586 概述 本章讲述Struts2的工作原理. 读者如果曾经学习过Struts1.x或者有过Strut ...
随机推荐
- C#6.0新特性之字符串嵌入 String Interpolation
6.0增加了 字符串嵌入值 的新语法糖. 以前我们做拼接的时候,一般这样写 var s = string.Format("this is a {0} !!!" , class1.p ...
- Java中的Math类的简单实用
System.out.println(Math.PI);//获取PI的值 System.out.println(Math.E);//常量E int min = Math.min(5, 4);//求最小 ...
- 浙大pat 1035题解
1035. Password (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To prepare f ...
- 3、Data对象
1.创建part1.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
- C#连接sqlserver数据库
// 混合登录 写法1:Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPas ...
- TortoiseGit - pull 与 fetch
Git的Pull其实是fetch与Merge两个命令的合并. 平时遇到的问题是,在本地分支进行了一些修改,准备提交.但是怕提交前有其他人push了新的代码.于是想在提交前,看看远程仓库上的log.这时 ...
- Chapter 16_3 多重继承
在Lua中进行面向对象编程时有几种方法,上一小结介绍了一种使用__index元方法的做法. 下面要介绍另一种方法,可以在Lua中实现多继承. 关键一点,在于用函数作为__index元字段. 多重继承意 ...
- 屏幕录像专家2014 v0318 免费版
软件名称: 屏幕录像专家2014软件语言: 简体中文授权方式: 免费试用运行环境: Win8 / Win7 / Vista / WinXP软件大小: 7.9MB图片预览: 软件简介:屏幕录像专家201 ...
- 运行指定路径下的exe
public void StartProcess(string name) { string exeFileName = "DataControl.exe"; string sta ...
- grub4dos新手指南-1
对于多数没有或很少接触过linux的windows用户来说,刚开始使用grub时离不开菜单.也就是说,使用grub前,我们要准备menu.lst文件.先讲一些最为常用的命令help用来显示其它命令的用 ...