Struts2学习:HelloWorld

2023-05-16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

项目结构:

1、用IDEA新建一个SpringBoot+Maven的项目

2、新建的项目是没有webapp、WEB-INF、与web.xml文件的,需要在下图中添加:

3、在pom.xml引入struct2

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.18</version>
</dependency>

4、编写主页home.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Home</title>
</head>
<body>
<form action="hello">
    <label for="pername">Please enter your name</label>
    <input id="pername" type="text" name="name" />
    <input type="submit" value="提交" />
</form>
</body>
</html>

该页面输入一个名字,通过名为hello的action,将名字显示在另一个页面。

5、定义动作HelloWorldAction.java

public class HelloWorldAction {
    private String name;
    public String excute(){
        return "success";
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

6、jsp页面与动作之间需要通过WEB-INF\classes\struts.xml关联,且需要在web.xml中定义过滤器

struts.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>
    <!-- 设置struts是否为开发模式,默认为false,测试阶段一般设为true. -->
    <constant name="struts.devMode" value="true" />
    <package name="suibian" extends="struts-default">
        <action name="hello" class="com.owlforest.home.action.HelloWorldAction" method="excute">
            <result name="success">/HelloWorld.jsp</result>
        </action>
    </package>
</struts>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name>Struts 2</display-name>
    <welcome-file-list>
        <welcome-file>home.jsp</welcome-file>
    </welcome-file-list>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

7、编写跳转页HelloWorld.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>show name</title>
</head>
<body>
Hello World : <s:property value="name" />
</body>
</html>

需要注意的是,home.jsp、HelloWorldAction.java与HelloWorld.jsp中的name属性需要在名称上面保持一致。

form表单中的action名字与struct.xml中的action name要保持一致

这个地方在属性过多的情况下可能会出现命名冲突导致错误出现,不知道struct2是如何解决的,后续再继续学习。

8、result的type参数

上面的struts.xml配置的result为:

<result name="success">/HelloWorld.jsp</result>

这实际上时一种简写的形式,完整的形式为:

<result name="success" type="dispatcher">
    <param name="location">/HelloWorld.jsp</param>
</result>

dispatcher结果类型是默认的类型。它用于转发到服务器上的servlet,JSP,HTML等页面。它使用RequestDispatcher.forward()方法。

除了上述的dispatcher类型外,还有redirect、freemarker类型。

redirect结果类型调用标准的response.sendRedirect()方法,使得浏览器向给定的位置创建一个新请求。

<result name="success" type="redirect">
    <param name="location">https://www.baidu.com</param>
</result>

freemarker是一个流行的模板引擎,使用预定义的模板生成输出。这与JSP类似。使用方法如下:

在webapp下新建文件 hello.fm,内容为:

What's your name ?${name}

修改struts.xml即可完成配置。

<result name="success" type="freemarker">
    <param name="location">/hello.fm</param>
</result>

转载于:https://my.oschina.net/u/4108765/blog/3059592

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Struts2学习:HelloWorld 的相关文章

随机推荐

  • 重学前端学习笔记(六)--JavaScript类型有哪些你不知道的细节?

    笔记说明 重学前端是程劭非 xff08 winter xff09 前手机淘宝前端负责人 在极客时间开的一个专栏 xff0c 每天10分钟 xff0c 重构你的前端知识体系 xff0c 笔者主要整理学习过程的一些要点笔记以及感悟 xff0c
  • 用nvm安装node后,发现npm下载总是失败的解决办法

    用nvm安装node后 xff0c 发现npm下载总是失败的解决办法 执行安装命令如下出现npm下载失败 xff0c 尝试多次都不成功 xff1a C windows system32 gt nvm install 14 17 3 Down
  • OpenStack —— DevStack一键自动化安装

    一 DevStack介绍 Devstack 目前是支持Ubuntu16 04和CentOS 7 xff0c 而且Devstack官方建议使用Ubuntu16 04 xff0c 所以我们使用Ubuntu 16 04进行安装 默认无论是Devs
  • 树莓派3b+安装

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 贴散热片 xff1a 背面一片 xff0c 正面两篇 二 系统安装 xff1a 1 使用SD Formatter格式化SD卡 2 使用Win32DiskImager写入
  • Amap地图轨迹

    最近在做运动相关的项目 xff0c 需要运动轨迹 xff0c 接了一下Google xff0c 头一天还能获取Location xff0c 之后就没法用了 xff0c 所以换成高德 xff0c 高德的地图包Amap 使用高德地图定位Loca
  • 实现一个最小的 CSS 响应式布局系统

    阳光里她在院子中央晾晒着衣裳 在四季的风中她散着头发安慰着时光 赵雷 南方姑娘 响应式布局系统 xff0c 在现在流行的 CSS 框架中已经非常常见了 它主要由容器类和约定一行列数的栅格系统组成 xff0c 组成了一个框架的骨架 在流行的前
  • 写了一个拖动排序插件

    drag js drag js是一款拖动排序插件 xff0c 适配pc端和手机端 demo地址 tls1234 github io drag html 结构 lt ul class 61 34 item group 34 gt lt li
  • 关于工程效能的思考

    继阿里大中台之后 xff0c 现在的科技公司大多有一支致力于提升公司研发效率和沟通协作的工程效能团队 xff0c 作为这样团队的一员 xff0c 却看到愿景和现实激烈碰撞 xff0c 不禁有如下思考 效率的提升并不能减少工作时长 就拿前端研
  • May-周记(1)

    1 封装一个ajax span class hljs comment 封装一个ajax原生写法 span span class hljs function span class hljs keyword function span span
  • 程序员从阿里、京东、美团…面试回来,这些面试题你都会吗?

    面试 xff0c 难还是不难 xff1f 最终结果好还是不好 xff1f 取决于面试者的底蕴 xff08 气场 43 技能 xff09 心态和认知以及沟通技巧 而一些主流的大型互联网公司面试 xff08 阿里巴巴 京东 美团 滴滴 xff0
  • js深拷贝和浅拷贝

    数组的深浅拷贝 浅拷贝 var arr 61 span class hljs string 34 One 34 span span class hljs string 34 Two 34 span span class hljs strin
  • OpenGL/OpenGL ES入门:纹理初探 - 常用API解析

    系列推荐文章 xff1a OpenGL OpenGL ES入门 xff1a 图形API以及专业名词解析 OpenGL OpenGL ES入门 xff1a 渲染流程以及固定存储着色器 OpenGL OpenGL ES入门 xff1a 图像渲染
  • 获取hadoop集群资源信息

    根据hadoop提供的restful接口获取 http hadoop apache org docs stable gt YARN REST APIs gt Resource Manager 1 获取每个node的信息 import url
  • java版电子商务spring cloud分布式微服务b2b2c社交电商 (八)springboot整合mongodb

    电子商务社交平台源码请加企鹅求求 xff1a 三五三六二四七二五九 准备工作 安装 MongoDBjdk 1 8maven 3 0idea 环境依赖 在pom文件引入spring boot starter data mongodb依赖 xf
  • 金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

    为什么80 的码农都做不了架构师 xff1f gt gt gt 根据 2017 年的 DevOps 发展报告 xff0c 高效能组织和低效能组织在软件交付的效率上有数量级上的差异 技术组织的软件交付能力是一种综合能力 xff0c 涉及众多环
  • MongoDB的无缝集成,重拾后端之Spring Boot

    MongoDB是什么 xff1f MongoDB是一个NoSQL数据库 xff0c 是NoSQL中的一个分支 xff1a 文档数据库 和传统的关系型数据库比如Oracle SQLServer和MySQL等有很大的不同 传统的关系型数据库 x
  • 关于区块链智能合约的真相

    2019独角兽企业重金招聘Python工程师标准 gt gt gt title 关于智能合约的真相 就像 区块链 xff0c AI 和 云 这样的词语一样 xff0c 智能合约 也是那些得到大量炒作的短语之一 毕竟 xff0c 没有什么比不
  • 访问者模式

    2019独角兽企业重金招聘Python工程师标准 gt gt gt https blog csdn net jason0539 article details 45146271 转载于 https my oschina net u 2511
  • zip不是内部或外部命令,也不是可执行程序”详细解决办法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 书中第11章学习实例 xff1a 将文件备份成一个zip文件 xff08 python实现 xff09 书中源码 xff08 文件目录是自己新建文件夹的路径 xff0c 和
  • Struts2学习:HelloWorld

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 项目结构 xff1a 1 用IDEA新建一个SpringBoot 43 Maven的项目 2 新建的项目是没有webapp WEB INF 与web xml文件的 xff0