SSH框架学习之Struts2(3)action后续

参考视频:尚学堂

接收参数有中文怎么办

尽量用post
struts.xml中:

  <constant name="struts.i18n.encoding" value="GBK" /> <!-- internationalization -->

如果写了这个还是不可以,说明你的版本低,这是个系统bug,struts2 中2.1.7会修正这个问题
也可以:
在web.xml 中 的原来的filter改成旧的filter
旧的:

  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

但是旧的也有问题,这里就不说这个两难问题了,将来可以用spring解决,这里还可以用新的,等着以后修改这个bug
新的是:

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

简单的数据校验

方式很多,先讲最简单的
struts.xml里:

<package name="user" extends="struts-default" namespace="/user">
        <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
            <result>/user_add_success.jsp</result>
            <result name="error">/user_add_error.jsp</result>
        </action>
    </package>

action里:

public String add() {
        if(name == null || !name.equals("admin")) {
            this.addFieldError("name", "name is error");
            this.addFieldError("name", "name is too long");
            return ERROR;
        } 
        return SUCCESS;
    }

jsp里:

<%@taglib uri="/struts-tags" prefix="s" %>


<body>
    User Add Error!
    <s:fielderror fieldName="name" theme="simple"/>
    <br />
    <s:property value="errors.name[0]"/>
    <s:debug></s:debug>
</body>

页面–后台–处理
struts2向前台传错误信息:this.addFieldError(“”,);
前台展现:<s:fielderror fieldName = "" theme=""/>
<s:property value = "" />
<s:debug ></s:debug>

debug 会显示 值栈
s:property 常用
表示请你把给我取属性展现在这里,value stack和stack context都能取。value stack里的值直接写名字就能取到。

访问web元素

取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用:


  1. 前三者:依赖于容器
  2. 前三者:IOC
  3. (只用这种)
  4. 后三者:依赖于容器
  5. 后三者:IOC
  6. 在struts2中,struts会把前三的值挨个赋值给http前三里
    .attr 很少用,会挨个搜,不精确
    actionContext.getContext 不是单例,是个线程里的
    1.自己获取actionContext.getContext
    2.IOC 实现三个接口
    IoC 控制反转 inverse of control 本来是自己控制,自己new或者去拿,现在依靠别人(容器)
    DI 依赖注入 dependency injection 依赖别人给
    3.固定写法 基本不用
    4.依赖注入 实现一个接口

模块包含

struts.xml里:
include 可以把另一个xml包含在里面

<include file = “login.xml”/>

意义:分模块配置

默认action

struts.xml:

<default-action-ref name = '‘ ’'></default-action-ref>

找不到某些action的时候默认找这个

action总结

1.实现action最常用方式:继承ActionSupport
2.DMI动态方法调用
3.通配符配置 {1}{2} *_ (下划线不是必须的 ,自己多试一试)
4.接收参数的方法:一般用属性或者DomainModel来接收
5.简单参数验证 addFieldError,一般不使用struts2的UI标签
6.访问web元素
Map类型:IOC 依赖Struts2
原始类型:IOC 依赖struts2
7.包含文件配置:include
8.默认action处理:default

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值