struts1 标签.docx

上传人:b****4 文档编号:3733215 上传时间:2022-11-25 格式:DOCX 页数:18 大小:22.60KB
下载 相关 举报
struts1 标签.docx_第1页
第1页 / 共18页
struts1 标签.docx_第2页
第2页 / 共18页
struts1 标签.docx_第3页
第3页 / 共18页
struts1 标签.docx_第4页
第4页 / 共18页
struts1 标签.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

struts1 标签.docx

《struts1 标签.docx》由会员分享,可在线阅读,更多相关《struts1 标签.docx(18页珍藏版)》请在冰豆网上搜索。

struts1 标签.docx

struts1标签

struts1标签

标签库:

a)struts框架下的struts标签库

b)sunjstlc标签库

作用:

1)jsp和java代码分离--自定义标签

用标签来替代Java的代码

2)struts标签能够和struts-config.xml

actionForm等特有的对象进行交互

struts标签库

html标签---替代基本的html元素

bean标签---访问JavaBean

logic标签---for

if判断程序结构的标签化

html标签

1.html标签

<%tagliburi="/WEB-INF/struts-html.tld"prefix="html"%>

基本html标记的替代标签

a)基本的html元素标签(选择使用)

html>*****

htmllocale="true">对应

base>*****

base/>对应

//localhost:

8080/aa.jsp">

当前页面的地址

img>*******

imgpage="images/zhangying.gif"/>

对应

传参数

imgpage="jspimage.jsp"paramId="id"paramName="1"/>

对应

id=1"/>

****

link>3个属性pagehrefforward

代替Html中超链接标记

跳转

linkpage="logout.jsp">相对路径page

注销

link>

对应

注销

linkhref="">绝对路径href

sohu网站

link>

对应

sohu网站

struts-config.xml中的global-forwards

forward

linkforward="success">对应全局转发

成功页面

link>

对应

成功页面

传参数:

paramId指定传参数的名字id

paramName指定参数的值1

linkpage="/deleteemp.do"paramId="id"paramName="1">

删除

link>

对应

id=1">删除

rewrite>输出对应的URI的字符串

不产生超链接

rewritepage="/deleteemp.do"paramId="id"paramName="1">

对应

/deleteemp.do?

id=1

b)基本表单标签->form表单******

form>

text>

hidden>

reset>

submit>

password>

checkbox>

radio>

file>-----文件类型

select>

option>

对应基本的表单元素property=""value=""

对应于

textproperty="user"value=""/>

体育

游泳

对应于

checkboxproperty="ah"value="1">体育

checkbox>

checkboxproperty="ah"value="2">游泳

checkbox>

file>---文件的上传的标签

common-fileupload-1.0.jar

实现文件的上传

actionForm中FormFile的类型代表file文件

用处:

file/>文件上传得

link/>页面跳转的

c)错误和正确信息标签*******

jdk的bin中native2ascii.exe

编码方式变为Unicode方式

native2ascii-encodinggb2312applicationResources.properties

ApplicationResources_zh_CN.properties

errors/>

输出所有actionError的内容

errorsproperty="uname"/>

输出key=uname对应的内容

2.bean标签访问变量的属性或输出值

访问JavaBean

a)访问http请求信息和jsp隐式对象

**

cookie>cookie访问

cookieid="mycookie"name="loginname"value="123"/>

id--自己设置Cookie变量的名字

name--Cookie对象的名字

value--默认值

writename="mycookie"property="value"/>

取出值

writename="mycookie"property="name"/>

取出名字

Cookiec=newCookie("loginname","northwind");

c.getValue()

c.getName()

***

parameter>访问请求的参数request

parameterid="arg1"name="username"value="north"/>

writename="arg1"/>

对应的Java代码

request.getParameter("username");

****

page>访问jsp的隐式对象---属性

session

getId()->id

getCreationTime()->creationTime

application

request

response

所有对象的get方法能访问到的属性都可以被这个标签访问

属性的第一个字母变成小写后都可以访问

pageid="this_session"property="session"/>

writename="this_session"property="creationTime"/>

b)访问资源

***

message>访问applicationResources中的消息

messagekey="hello.user"/>输出key的值

include>包含资源到一个变量中

动作

includepage="testpage1.jsp"/>

页面运行结果包含进来

等价于下面2句话

includeid="tp1"page="/testpage1.jsp"/>

writename="tp1"/>输出变量的内容

输出的是页面的内容

c)定义和输出JavaBean

*****

define>定义一个变量

defineid="aa"value="Hello"/>

writename="aa"/>->Hello

defineid="bb"name="empbean"property="ename"/>

JavaBean:

empbean

属性ename

变量Stringbb=empbean.getEname();

writename="bb"/>得到empbean中属性ename的值

***

write>显示JavaBean及其属性或变量的内容

writename=""property=""scope=""/>

name=某个范围中的属性的名字(对象)

property=JavaBean中的属性

scope=访问对象的范围

3.logic标签

a)ifelse

ifa=bthen等于

不等于

大于

小于

字符串

匹配

不匹配

空值

非空值

b)循环

for(inti=0;i

}

对集合的遍历如何做?

?

a)

存在性

present/>是否存在某种变量

cookie="cookie名字"

header="request中的header"

parameter="参数"

name="变量或JavaBean"property=""

scope="request/session/application"

如果存在就输出标签体的内容

相反的标签

notpresent/>

是否为空

空-""或null

emptyname="变量或JavaBean"property="">

empty>

是否相等

equal/>

大于>

greaterThan/>

>=

greaterEqual/>

小于<

lessThan/>

<=

lessEqual/>

匹配

match/>

nomatch/>

location表示的是位置

从开始匹配start

从结束匹配end

循环

iterate>

<%

Vectorv=newVector();

v.add("1");

v.add("2");

v.add("3");

v.add("4");

request.setAttribute("number",v);

%>

id定义一个变量

name定义变量的内容

iterateid="ele"name="number">

writename="ele"/>

iterate>

对集合中所有元素的循环访问

indexId定义循环计数器变量i

offset开始元素的位置

length要输出元素的个数

iterateid="ele"indexId="index"name="number"offset="1"length="2">

writename="index"/>.

writename="ele"/>

iterate>

c)logic转发和重定向

forwardname="index"/>对应global-forwards

转发到index

forwardpage="index"/>

redirectpage="aa.jsp"/>

重定向到aa.jsp

response.sendRedirect("aa.jsp")

struts中文乱码问题的解决

<1>编码转换函数

<2>过滤器

Action和jsp的开发其实就是对Struts标签的运用.掌握标签的熟练程度决定了开发效率.初学者往往对某个数据表示或数据获取,束手无策.一个简单的问题浪费一两天时间也就不足为怪了.导致整个开发进度延后.外面的struts书籍介绍标签和数据传输原理都比较简单,下面我对标签技术和数据传输原理,进行全方位多角度的剖析.希望对各位有所帮助.以此为模版,将大大提高开发效率.以sample为机能名称.

①画面上有一text框,显现内容为某一数据表中的某一字段.那我们该如何设置和得到此数据呢?

SampleJsp:

textname="sampleForm"property="name"/>

SampleForm.java:

//form文件名必须和jsp中标签的name对应

Stringname;//必须和jsp中该项目的property一样

publicStringgetName(){returnname;}

publicvoidsetName(Stringname){this.name=name;}

变量和方法名,不可以顺意.变量abcd,那方法名就是setAbcd和getAbcd.注意大小写.

jsp中的项目必然全部在form里面有所表示,当然反过来,form里的项目在jsp中不一定全部表示(可能有辅助动作的对象或验证)

SampleAction.java

publicActionForwardstart(ActionMappingmapping,

ActionFormargForm,HttpServletRequestreq,HttpServletResponseres)

throwsException{

SampleFormform=(SampleForm)argForm;

Stringname=………………othercodesforgetnamefromdb

//setname

form.setName(name);

//nowtextwillshowthename

}

publicActionForwardsave(ActionMappingmapping,

ActionFormargForm,HttpServletRequestreq,HttpServletResponseres)

throwsException{

SampleFormform=(SampleForm)argForm;

//getname

Stringname=form.getName();

………………othercodesforsavename

}

jsp和form对应,action操作form,form其实起了传输数据的作用.这就是struts标签的核心原理.得到数据和设置数据没问题了,剩下的工作也就得心应手了.

②再看一个处理标签的方法.画面上是一个明细一览表示(表).表示的是数据表user的相关数据(id,name).

SampleJsp:

presentname="sampleForm"property="userList">

iterateid="user"name="sampleForm"property="userList">

writename="user"property="id"/>

writename="user"property="name"/>

iterate>

present>

logic:

present是逻辑判断,sampleForm中userList为空(无数据或null),下面的东东不显示.

logic:

iterate是逻辑循环,userList有几条数据,就循环几次.

writename="user"property="id"/>是lable标签,显示user这个对象(entity)的id属性.或者说显示数据表user中的一条记录中的id这个列.

User.java(就是entity,因为和业务密切,高达不开发,切记切记不可顺意修改.遇到设计有问题,QA日本)

Stringid;

publicStringgetId(){returnid;}

publicvoidsetId(Stringid){this.id=id;}

Stringname;

publicStringgetName(){returnname;}

publicvoidsetName(Stringname){this.name=name;}

看到这,是否觉得面熟啊,好象和FORM一样,但有点不一样,不一样在哪里,看下去后,自己感悟吧.

SampleForm.java:

ListuserList;

publicListgetUserList(){returnuserList;}

publicvoidsetUserList(ListuserList){this.userList=userList;}

form只要这些,那你会问,id和name,struts如何能得到呢?

你不是说过jsp必须和form一样对应吗?

不错,一一对应是肯定的.UserList信息已经包含了一切,还需要定义id和name吗?

至于struts如何得到数据,那就看下面的action是如何处理的吧.

SampleAction.java

publicActionForwardstart(ActionMappingmapping,

ActionFormargForm,HttpServletRequestreq,HttpServletResponseres)

throwsException{

SampleFormform=(SampleForm)argForm;

ArrayListuserList=newArrayList();

Useruser=newUser();

user.setId

(1);

user.setName(“name1”);

userList.add(user);

Useruser=newUser();

user.setId

(2);

user.setName(“name2”);

userList.add(user);

//setuserList

form.setUserList(userList);

//nowtablewillshow

}

一切搞定.是不是很简单,但估计你还是有点晕.你还是想问我,id和name到底是如何设置的?

Action设置了userList就够了,它包含够多的信息了.struts看见了你设置了userList.它就知道了这个list里面都user(entity),useruser(entity)里面不是有很多get,set方法吗?

再看下下面的东东.

iterateid="user"name="sampleForm"property="userList">

writename="user"property="id"/>

id=”user”,和name="user"对应了,明白啥意思吗?

.就象循环指明索引一样.property="id"就是要显示的这个索引对应的内容.Struts就是这样来认id和name的.

③接下来,看一个加强版的table例子,在显示的明细一览,每一行前面加一个radio框,让用户选择哪个user.进行删除操作.

SampleJsp:

presentname="sampleForm"property="userList">

iterateid="user"name="sampleForm"property="userList">

radioname="sampleForm"property="selectedUserId"value="<%=((jp.co.mhcb.obs.persis.entity.User)pageContext.getAttribute("user")).getId().toString()%>"/>

writename="user"property="id"/>

writename="user"property="name"/>

iterate>

present>

sampleForm.java:

StringselectedUserId;

publicStringgetSelectedUserId(){returnselectedUserId;}

publicvoidsetSelectedUserId(StringselectedUserId){

this.selectedUserId=selectedUserId;

}

SampleAction.java

publicActionForwarddelete(ActionMappingmapping,

ActionFormargForm,HttpServletRequestreq,HttpServletResponseres)

throwsException{

SampleFormform=(SampleForm)argForm;

StringselectedUserId=form.getSelectedUserId();

//getuserbyselectedid

Useruser=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1