Struts2学习笔记(二) 入门demo利用struts2进行请求拦截及转发

一、简介:

struts2是基于MVC设计模式的web层框架,也就是说他相当于MVC框架中的web层,所以他本质上就是一个servlet。

如下图所示:传统模式下一个请求对应一个servlet.
而Struts2是基于前端控制器模型,也就是所有的请求都要先通过前端控制器,然后根据不同的请求分发到不同的action中,因为他可以拦截所有的请求,所以前端控制器也就是一个过滤器

在这里插入图片描述

二、入门demo的编写

1. 在WebContent目录下创建一个demo1.jsp和一个success.jsp,对页面进行简单的编写。
在这里插入图片描述
demo1.jsp的代码
在这里插入图片描述
success.jsp页面的代码就简单的在里面写上跳转成功
在这里插入图片描述
2. 编写处理请求的action类,在src目录下创建一个HelloAction类,在里面写一个名为execute()的方法。
在这里插入图片描述

在这里插入图片描述
3. 对写好的Action类进行配置,在src下编写一个Struts.xml文件
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
 	<!-- 配置struts的包。  name随便起但是不能有重名的package -->
 	<package name="demo1" extends="struts-default" namespace="/">
 		<!-- 配置Action。  name是jsp中配置的访问路径去掉action  -->
 		<action name="hello" class="com.noble.struts2.demo1.HelloAction" method="execute">
 			<!-- 配置页面跳转 -->
 			<result name="success">/demo1/success.jsp</result>
 		</action>
 	</package>

</struts>

注意:

  • 在struts节点下我们首先对package进行配置,package的name可以随意起,但是一个配置文件中不能有重名的package。
  • package的extends都是"struts-default"
  • package的namespace我们写"/"就行,如果我们在后面写入了内容如/xxx。那么我们就需要对jsp页面中的访问路径进行修改,将原来的 /hello.action 改为 /xxx/hello.action。
  • action标签的name要和访问路径一致,也就是说我们的jsp页面中的访问路径为hello.action,所以这里的name就是hello。
  • action标签的Class为我们之前编写的action类的全路径。
  • action标签的method为action类中要执行的方法名。默认为execute,因为我们这里要执行的方法就行execute(),所以method不写也可以。如果要想访问其他自定义的方法,那么就要写上相应的方法名称。
  • action标签下的result是对action类中的返回的结果进行分发,也就是与execute()方法的返回值进行匹配,这里我们把execute()返回值写死为"success"。然后我们定义一个name为success的result标签,如果execute()方法的返回值与result的name向匹配,就会访问我们在后面写好的路径。这里的result可以配置多个,也就实现了对不同请求的转发。
  • 如果一个包下有自己的struts配置可以在struts.xml中通过include标签进行引用如下图所示,只需要写入要引入的配置文件的全路径。
    在这里插入图片描述
    4. 配置过滤器,在web.xml中进行过滤器配置
       <!-- 配置struts2的核心过滤器  -->
       <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>

注意:

  1. filter-class是固定的,是struts2中的一个包
  2. url-pattern中写为/*表示对所有的请求进行拦截

三、项目运行

接下来我们就可以来运行一下看一下效果啦
首先我们访问demo1.jsp页面
在这里插入图片描述
点击下面的标签,可以看到控制台中打印出了helloWorld,说明执行了helloaction中的execute()方法
在这里插入图片描述
在这里插入图片描述
页面显示了跳转成功,说明成功跳转到了success.jsp页面中,到此一个简单的入门demo就结束了
在这里插入图片描述

发布了26 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/showadwalker/article/details/89761573
今日推荐