Struts2是什么
百度说的
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
我说的
上面这是百度写的,百度写的太啰嗦了,简单的来说,Struts2就是一个框架,它是属于web层的一个框架,是Struts1的一个升级版,但是它和Struts1来相比,提供了太多的增强和改进,怎么运行的呢,就是实现了Servlet的功能,来进行控制页面跳转。
同时这也是基于MVC设计模式的Web应用框架,Struts2的控制功能就相当于MVC中的Controller的功能,用来控制页面的转向。
为什么说Struts2实现了Servlet的功能?
Struts2的优缺点
优点
- 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。
- 丰富的标签库,大大提高了开发的效率。
- Struts2提供丰富的拦截器实现。
- 通过配置文件,就可以掌握整个系统各个部分之间的关系。
- 异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。
- Struts2的可扩展性高。
- 面向切面编程的思想在Strut2中也有了很好的体现。
缺点
- Struts2中Action中取得从jsp中传过来的参数时还是有点麻烦。
- 校验还是感觉比较繁琐,感觉太烦乱,也太细化了,如果校验出错的只能给用户提示一些信息。
- 安全性有待提高。
优缺点来自这里
拦截器和过滤器
过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。
拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。
这里不做详细介绍,百度一下
Struts执行流程图

图片来自这里(这篇博客写的非常的好,强烈推荐!!)
Warning!!!
千万不要错过!!!具体详细的Struts2的详细介绍参考网站:tutorialspoint
别说英文网站我看不懂,我四级都没过的渣渣靠着翻译都没问题!!!
这个Demo可以运行的起来

导入jar包

配置Struts2核心过滤器:web.xml
<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"> <display-name>
display-name> <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>
编写Action类:HelloAction.java
package com.banana.struts.demo1; /* * Struts2的Action类 */ public class HelloAction {
public String execute(){
System.out.print("HelloAction执行了......"); return "success"; } }
编写struts.xml来控制转向
<struts>
<package name="hello" extends="struts-default" namespace="/">
<action name="hello" class="com.banana.struts.demo1.HelloAction">
<result name="success">/demo1/success.jsp
result>
action>
package>
struts>
添加页面:demo1.jsp、success.jsp
demo1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'demo1' starting page
title>
head> <body> <h1>Struts2的入门
h1> <h3><a href="${ pageContext.request.contextPath }/hello.action">Struts2的入门
a>
h3>
body>
html>
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <base href="<%=basePath%>"> <title>success page
title>
head> <body> 跳转成功 <br>
body>
html>
页面跳转逻辑

总结一下
觉得不错点个赞再走吧?
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201768.html原文链接:https://javaforall.net
