【Java EE 学习第34天】【struts2学习第一天】

一、struts2简介

    struts2是一个用来开发MVC应用程序的框架。它提供了Web应用程序开发过程中的一些常见问题的解决方案。

  1.struts2的作用域范围:三层架构当中的第一层,相当于MVC层,其出现的作用就是标准化MVC,让程序员在某个标准阿下进行程序的开发。

  2.struts2的下载:http://struts.apache.org/download.cgi#struts2324

          jar包、源码、文档一应俱全。

  3.发展历史:Struts1是世界上第一个MVC的框架,在2001年发布;Struts2不是Struts1的升级,是由WebWork发展起来的,吸收了Struts1和WebWork的优点。

  4.Struts2能够解决的问题:

    (1)页面导航活动的开始

    (2)用户输入数据的合法性验证

    (3)统一的布局

    (4)可扩展性

    (5)国际化和本地化

    (6)支持Ajax 

    (7)解决表单的重复提交问题

    ......

  5.struts2的工作原理:写到这里突然想到了王建老师,之前王健老师教我们的东西突然发现和struts2极其相似,真的非常感谢王健老师。不赘述。见之前的BaseServlet原理。

  6.struts2的第一个小项目:Hello,World!

    (1)应当加入的基础包包括:asm-3.3.jar、asm-commons-3.3.jar、asm-tree-3.3.jar、commons-fileupload-1.3.1.jar、commons-io-2.2.jar、commons-lang-2.4.jar、commons-lang3-3.2.jar、commons-logging-1.1.3.jar、freemarker-2.3.22.jar、javassist-3.11.0.GA.jar、ognl-3.0.6.jar、struts2-core-2.3.24.jar、xwork-core-2.3.24.jar    一共13个包。

    (2)修改index.jsp页面:

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <meta http-equiv="content-type" content="text/html;charset=utf-8">
 7     <title>Insert title here !</title>
 8   </head>
 9
10   <body>
11       <a href="<c:url value=‘/myaction/helloWorldAction.action‘/>">hello,world</a>
12   </body>
13 </html>

index.jsp

    (3)新建类:HelloWorldAction,该类实现了com.opensymphony.xwork2.Action接口。

 1 /**
 2  *
 3  */
 4 /**
 5  * @author kdyzm
 6  *
 7  */
 8 package com.kdyzm.action;
 9
10 import com.opensymphony.xwork2.Action;
11
12 public class HelloWorldAction implements Action
13 {
14     @Override
15     public String execute() throws Exception {
16         System.out.println("Hello,World!");
17         return "success";
18     }
19
20 }

HelloWorldAction.java

    (4)在src目录下新建文件struts.xml(文件名和位置不能改变)

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <!-- namespace的书写必须加上/ -->
 7     <package name="firstpackage" namespace="/myaction" extends="struts-default">
 8         <action name="helloWorldAction" class="com.kdyzm.action.HelloWorldAction">
 9             <result name="success">/information/success.jsp</result>
10         </action>
11     </package>
12 </struts>

struts.xml

    (5)配置过滤器

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3     <filter>
 4         <filter-name>strutsFilter</filter-name>
 5         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 6     </filter>
 7     <filter-mapping>
 8         <filter-name>strutsFilter</filter-name>
 9         <url-pattern>*.action</url-pattern>
10     </filter-mapping>
11 </web-app>

web.xml

    (6)测试

      

    请求结果:

      

    (7)struts.xml配置文件详解:

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <!-- namespace的书写必须加上/ -->
 7     <package name="firstpackage" namespace="/myaction" extends="struts-default">
 8         <action name="helloWorldAction" class="com.kdyzm.action.HelloWorldAction">
 9             <result name="success">/information/success.jsp</result>
10         </action>
11     </package>
12 </struts>

      <!DOCTYPE>标签节点是需要遵循的规范,这里有一个dtd文件,我们需要遵循该dtd的标准在struts.xml文件中进行修改!

      struts标签是根节点标签;

      package标签是包标签,其name属性自定义,但是其namespace属性却是个非常重要的属性,该属性必须和index.jsp中a标签定义的完全相同才行;extends指明了继承了哪个包,这里是默认的包struts-default,该包是非常重要的包,如果没有该包,就没有了使用struts2的意义。

      action标签对应着处理jsp页面请求的一个方法,默认方法是Action接口的execute()方法,而class属性指明了使用的类的路径。

      result标签对应着实现了Action接口的类调用方法之后返回的结果,name属性必须和返回结果相一致,这里可以有多个result标签以应对不同的处理结果;result标签中的文本节点标志着需要转发或者重定向到某个页面的页面路径。默认的方法是转发。这些都可以查看底层源代码查看到。

    (8)小练习源代码:https://github.com/kdyzm/day34_struts_HelloWorld



二、

时间: 2024-12-26 02:10:06

【Java EE 学习第34天】【struts2学习第一天】的相关文章

[原创]java WEB学习笔记6:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记64:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) ModelDriven拦截器 paramter 拦截器

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记56:Struts2学习之路---Struts 版本的 登录 demo

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记53:Struts2学习之路---前奏:使用 Filter 作为控制器的 MVC

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

[原创]java WEB学习笔记54:Struts2学习之路--- 编写Struts2 的第一个程序,HelloWord,简述 package ,action,result

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------