struts2相关的配置

struts2 的核心配置文件

  • 名称和位置是固定的
  • 在配置文件中主要有三个标签,package,action,result,标签里面有属性

package 标签

  • 这里写图片描述
  • package 标签类似于Java中的包,为了区别不同的action,必须首先写package标签,在package里面才能配置action
  • name属性
    • name属性值和功能本身是没有关系的
    • 在一个配置文件中可以写多个package标签,但是name属性值是不能相同的
  • extends属性
    • 属性值是固定的
    • 写了这个属性后,在package 中配置的类具有了action的功能
  • namespace 属性
    • 默认值是’/’
    • namespace 属性值和action标签内的name属性构成了访问路径这里写图片描述

action标签

  • action 标签配置action访问路径

  • name属性

    • name属性和package标签的namespace属性的值一起构成了访问路径
    • package内部可以添加多个action标签,但是action标签的name属性值是不能一样的
  • class 属性
    • action 的完整路径
  • method 属性
    • 表示要执行action的哪个方法,默认的是执行execute方法

result标签

  • 根据action方法的返回值,配置到不同的路径里面
  • name 属性
    • 和方法的返回值一样
      • 如果一样,那就将会跳转到result指定的页面
      • 如果方法有返回值,但是在result 标签内没有和方法的返回名一样的name属性值,那么就会报错404
    • SUCCESS :name属性的默认值
    • NONE:action执行完不返回视图
    • ERROR:action执行失败,返回错误视图
    • LOGIN:action因为用户没有登录返回登录视图
    • INPUT:action登录的时候,需要获取前端的参数,input代表这个参数输入的界面,参数没有校验成功,则返回该视图
  • ==type 属性==
    • 配置如何 到路径中(转发或者重定向)
      • ==转发== dispatcher
      • ==重定向到页面== redirect
      • ==重定向到另一个action==redirectAction
    • type属性默认值是做转发操作这里写图片描述

struts2 常量配置

  • ==在struts.xml文件中配置==这里写图片描述这里写图片描述
  • 在src下面创建struts.properties 进行修改这里写图片描述
  • 在web.xml进行配置这里写图片描述

  • ==常用的struts2常量配置==

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>

    <!-- 所有匹配*.action的请求都由struts2处理 -->
    <constant name="struts.action.extension" value="action" />
    <!-- 是否启用开发模式 -->
    <constant name="struts.devMode" value="true" />
    <!-- struts配置文件改动后,是否重新加载 -->
    <constant name="struts.configuration.xml.reload" value="true" />
    <!-- 设置浏览器是否缓存静态内容 -->
    <constant name="struts.serve.static.browserCache" value="false" />
    <!-- 请求参数的编码方式 -->
    <constant name="struts.i18n.encoding" value="utf-8" />
    <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
    <constant name="struts.i18n.reload" value="true" />
    <!-- 文件上传最大值 -->
    <constant name="struts.multipart.maxSize" value="104857600" />
    <!-- 让struts2支持动态方法调用 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <!-- Action名称中是否还是用斜线 -->
    <constant name="struts.enable.SlashesInActionNames" value="false" />
    <!-- 允许标签中使用表达式语法 -->
    <constant name="struts.tag.altSyntax" value="true" />
    <!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
    <constant name="struts.dispatcher.parametersWorkaround" value="false" />

    <package name="basePackage" extends="struts-default">


    </package>

</struts>
  • struts.i18n.encoding=UTF-8
  • 使用Servlet接受表单中文数据,需要进行处理编码问题
  • 作用:
    • 表单提交到action里,在action里可以获取表单 提交的数据
    • 如果在action获取表单通过post方式提交的数据含有中文,中文乱码问题就已经解决了,,不需要自己处理问题

分模块开发

  • 单独写配置文件,讲我们定义的配置文件引入到核心配置文件即可
  • 就好像在写前端页面的时候一样,将写好的js,css文件引入到html中,即可,这样就实现了 模块开发这里写图片描述

action 编写方式

  • 创建普普通类,这个类不继承任何类,不实现任何接口这里写图片描述
  • 创建类,实现接口Action这里写图片描述
  • ==创建类继承ActionSupport==这里写图片描述
  • 第二中和第三种方式可以使用action接口中的一些常量,
  • 第二种必须要实现execute方法,不方便

action 方法

  • action的方法如果有返回值,那么必须是String类型
    • 如果又返回值,那么必须在result标签的name属性有相同的值,如果没有会报错404,结果没有定义的 错误这里写图片描述
  • ==action方法可以没有返回值,两种设置方法==
    • 将方法的返回值类型改为void(不推荐使用)
    • 或者return “none” ;或者return NONE
      • NONE 是action接口的常量,想要使用action接口常量,需要实现接口,或者继承actionsupport
    • 如果没有返回值那么就可以不需要使用resutl进行配置了这里写图片描述

==访问action 的方法==

  1. 使用action标签内的method属性指定要执行的action方法
    • 定义action类这里写图片描述
    • 定义action核心配置文件这里写图片描述
    • 这种方式可以指定要访问的方法,但是如果有大量的方法需要写,那么就需要大量的配置文件,显然是不合适的
  2. ==使用通配符实现==
    • 如果没哟进行配置,默认访问的是action中的execute方法,显然这样有很多的局限性
      • 第一:一个action中指定定义execute方法了,虽然定义了多个,但是 配置文件只能指定一个,其他都是无效的
      • 第二:这样的一个action一个小功能,和Servlet相似,代码冗余,
      • 综上所诉,所以需要使用统配符的方式,一个action中配置多个方法,有请求路径动态调用
        这里写图片描述
    • 在action 标签里面name属性,name属性里面写符号 *
    • 在method中获取匹配的内容,方式{第几个星号,从1开始计数}
      • 如果有多个可以通过{星号的索引,从1开始计数}
    • * 代表匹配任意的内容image
  3. 动态访问实现(不推荐使用)

设置eclipse 访问页面不需要项目名

  • 点击项目—右键—-properties—web project settings—context root –改为/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值