当前位置: 首页 > news >正文

Struts2入门示例

1、导入struts2需要的9个包到lib文件夹中

 

2、配置web.xml文件

<?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">
  
  <filter>
      <filter-name>struts</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  
  <filter-mapping>
      <filter-name>struts</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

如上面所示:配置了StrutsPrepareAndExecuteFilter,StrutsPrepareAndExecuteFilter就会自动加载struts2框架。配置好了filter后,还需要配置filter拦截的URL。一般让拦截用户所有请求。配置filter还可以是org.apache.struts2.dispatcher.FilterDispatcher,但是该filter已近过时了,所有还是用StrutsPrepareAndExecuteFilter

 

3、Action控制器

在src/action文件夹下面创建一个ShowWords类

 1 package action;
 2 
 3 public class ShowWords {
 4 
 5     private String name;
 6     private String words;
 7     public String getName() {
 8         return name;
 9     }
10     public void setName(String name) {
11         this.name = name;
12     }
13     public String getWords() {
14         return words;
15     }
16     public void setWords(String words) {
17         this.words = words;
18     }
19     
20     public String execute(){
21         if(name.equals("")){
22             return "input";
23         }else{
24             words="欢迎您:"+name;
25             return "success";
26         }
27     }
28 }

如上ShowWords类,添加了name和words属性,并在action中执行默认方法execute,判断如果字符串为空,则返回逻辑视图input,否则返回success逻辑视图

 

4、配置struts.xml

在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>
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <constant name="struts.action.extension" value="action,do,"></constant>
    <package extends="struts-default" name="default" namespace="/">
        <action name="showWords" class="action.ShowWords">
            <result>/Hello.jsp</result>
            <result name="input">/index.jsp</result>
        </action>
    </package>
</struts>

其中dtd名称空间可以拷贝struts2-core-2.3.28.1.jar包下面struts-default.xml下面的DOCTYPE

constant:用于配置struts默认配置,例如struts.i18n.encoding,用于设置字符编码;struts.action.extension:用于设置url的扩展名,这里设置可以不需要扩展名,也可以用action或do作为扩展名

struts框架默认属性保存在struts2-core-2.3.28.1.jar/org.apache.struts2/default.properties中

extends="struts-default":表示该配置继承自srtuts-default,而struts-default配置在struts-default.xml文件中

<action name="showWords" class="action.ShowWords">

name:url访问路径   class:action类

在action标签中还有一个method属性,该属性用来指定需要执行action类中的什么方法,如果不指定,默认方法execute方法

<result>/Hello.jsp</result>
<result name="input">/index.jsp</result>

根据action类返回结果,来控制视图

name属性即为action的返回值,如果不设置name默认为success,而result中文本表示需要执行的视图jsp的地址

 

相关文章:

  • [Java] 图说 注解
  • [一句秒懂]拦截iOS系统导航栏返回按钮事件-三种方法
  • mysql常用基础操作语法(三)~~对数据的增删改操作【命令行模式】
  • IIS性能计数器说明
  • 录音,录制视频,权限问题
  • vue中实现单选
  • CDM2.04.06 WHQL Certified
  • centos xargs
  • python 程序列表
  • CISA 信息系统审计知识点 [第二章. IT治理和管理 ]
  • 让标签横向滑动 盒模型
  • 编程基础-----c语言打印调用栈
  • xcache为php加速
  • 倒立三角打印
  • TCP协议简介
  • [译]CSS 居中(Center)方法大合集
  • 【刷算法】求1+2+3+...+n
  • 10个确保微服务与容器安全的最佳实践
  • 2018一半小结一波
  • Angular Elements 及其运作原理
  • cookie和session
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • CSS魔法堂:Absolute Positioning就这个样
  • extract-text-webpack-plugin用法
  • Idea+maven+scala构建包并在spark on yarn 运行
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JavaScript中的对象个人分享
  • js算法-归并排序(merge_sort)
  • Linux链接文件
  • MD5加密原理解析及OC版原理实现
  • PHP 7 修改了什么呢 -- 2
  • React Native移动开发实战-3-实现页面间的数据传递
  • scrapy学习之路4(itemloder的使用)
  • SQLServer之索引简介
  • vue 配置sass、scss全局变量
  • XForms - 更强大的Form
  • 回流、重绘及其优化
  • 机器学习中为什么要做归一化normalization
  • 一个完整Java Web项目背后的密码
  • 用 Swift 编写面向协议的视图
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 进程与线程(三)——进程/线程间通信
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #微信小程序:微信小程序常见的配置传旨
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • $refs 、$nextTic、动态组件、name的使用
  • (1)STL算法之遍历容器
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (52)只出现一次的数字III
  • (BFS)hdoj2377-Bus Pass
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740