四、Struts2 控制器&其他OGNL标签&拦截器

1、Struts2 的拦截器(重点)

1.1、什么式拦截器

Interceptor:拦截器,起到拦截Action的作用。

  Filter:过滤器,过滤从客户端向服务器发送的请求。

  Interceptor:拦截器,拦截是客户端对Action的访问。更细粒度化的拦截。(拦截Action中的具体的方法)。

Struts2框架核心的功能都是依赖拦截器实现。

2、Struts2 的标签库

2.1、通用标签库

2.1.1、判断标签

    <s:if>、<s:elseif>、<s:else>

    <s:iterator>

    其他常用的标签

      <s:property/>

      <s:debug/>

      <s:date />----在页面上进行日期格式化。

2.2、UI  标签库(表单标签,方便数据回显)

  自带的标签库有默认样式,可以通过更改常量取消或配置自己写的样式,也可以在标签上通过属性的值更改样式。

  因为提交的时候 Action 中有这些属性,或者模型驱动的对象,都是在值栈里面;Action 在值栈里面,Action 的属性也在值栈里面;当然实现模型驱动的话,模型对象也在值栈里面。因为值栈里面有这些值,回来的时候(地址栏没变,类似于转发的效果),使用的他的表单标签的话,那么就会去匹配,如果属性名跟值栈里面一致,就会自动回显。

   如果想要修改的话,修改要先查询,最后把那个对象手动 push 一下,值栈里边就有这些属性了。有这些属性之后,只要写他的表单标签就行了(出来复选框需要自己处理一下)。使用他的标签的好处就是会自动回显,使用原生 html 标签想要回显,就有自己处理一下。

  复选框数据回显需要自己处理一下,因为里边的数据是一个 MAp/List,而存到数据库中的又可能是一个字符串,取出来的时候要自己切一下。

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>UI标签</h1>
<h3>传统的表单</h3>
<form action="${ pageContext.request.contextPath }/uiAction.action" method="post">
    <input type="hidden" name="id"/>
    用户名:<input type="text" name="name"/><br/>
    密码:<input type="password" name="password"><br/>
    年龄:<input type="text" name="age"><br/>
    性别:<input type="radio" name="sex" value="男"><input type="radio" name="sex" value="女"><br/>
    籍贯:<select name="city">
        <option value="">-请选择-</option>
        <option value="北京">北京</option>
        <option value="上海">上海</option>
        <option value="深圳">深圳</option>
        <option value="韩国">韩国</option>
    </select><br/>
    爱好:<input type="checkbox" name="hobby" value="basketball"/>篮球
    <input type="checkbox" name="hobby" value="football"/>足球
    <input type="checkbox" name="hobby" value="volleyball"/>排球
    <input type="checkbox" name="hobby" value="pingpang"/>乒乓球<br/>
    介绍:<textarea name="info" cols="8" rows="2"></textarea><br/>
    <input type="submit" value="提交"/>
</form>

<s:debug></s:debug>
<h3>UI标签的表单</h3>
<s:form action="uiAction" namespace="/" method="post" >
    <s:hidden name="id" />
    <s:textfield name="name" label="用户名"/>
    <s:password name="password" label="密码" showPassword="true"/>
    <s:textfield name="age" label="年龄"/>
    <s:radio list="{'男','女'}" name="sex" label="性别"/>
    <s:select list="{'北京','上海','深圳','韩国'}" name="city" label="籍贯" headerKey="" headerValue="-请选择-"/>
    <s:checkboxlist list="#{'basketball':'篮球','football':'足球','volleyball':'排球','pingpang':'乒乓球'}" name="hobby" label="爱好"/>
    <s:textarea name="info" cols="8" rows="2" label="介绍" ></s:textarea>
    <s:submit value="提交"/>
</s:form>
</body>
</html>

  隐藏字段。。。

 

posted @ 2018-11-04 17:52  昱晟  阅读(197)  评论(0编辑  收藏  举报