WARN Form:308 - No configuration found for the specified action: 'loginProducer.action' in namespac

WARN Form:308 - No configuration found for the specified action: 'loginProducer.action' in namespac,第1张

警告信息

警告: No configuration found for the specified action: '/myNameSpace/login.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.

struts.xml配置信息(部分)

<package name="packageName" extends="struts-default" namespace="/myNameSpace">

<action name="login" class="com.jato.srvclink.test.login.LoginAction" method="login">

jsp页面配置信息(部分)

<s:form action="/myNameSpace/login.action">

思考:没有在''的namespace中发现指定的action '/myNameSpace/login.action'

答疑:因为配置的struts2标签并未指定namespace属性。所以struts2会默认从根命名空间"/"搜索action串'/myNameSpace/login.action',如果搜索不到将进入默认命名空间''搜索action请求串,在默认命名空间中是肯定找不到我们定义的action的,所以,struts2抛出一个警告信息。

但是为什么我们没有填写namespace,我们的请求也可以正常访问呢?

我们来看一下解析后的html

查看源码得到的html(部分)

<form id="login" onsubmit="return true" action="/srvclink/myNameSpace/login.action" method="post">

我们看到form提交的action串是准确的url请求,action串确实是/srvclin(应用根)/myNameSpace(命名空间)/login.action。

命名空间中找不到action定义,并不意味着这个action真的不存在,只是我们的代码有问题而已。还有一点是我们在jsp页面的action请求中手动的加入了.action后缀。事实上struts2会自动追加.action的,因为我们并没有合法的使用struts2的标签,所以struts2这里并没有给我们追加.action,解析后的代码中存在的.action,完全是我们手动在jsp页面填写的,有疑问的网友可以不手动添加查看html。

我们修改我们的程序代码

jsp页面配置信息(部分)修改后加入namespace属性,修改action属性值为/login.action

<s:form action="/login.action" namespace="/myNameSpace">

请求页面后,大家很失望吧?警告依然存在。但是我们看一下警告信息。

警告信息:

警告: No configuration found for the specified action: '/login.action' in namespace: '/myNameSpace'. Form action defaulting to 'action' attribute's literal value.

没有在'/myNameSpace'的namespace中发现指定的action '/login.action'

毫无疑问,这里的警告和第一次的警告信息截然不同。我们现在存在命名空间,'/myNameSpace'能够被struts2检索到,并不是开始的''。那问题的关键在哪里呢?

在namespace中没有发现指定的action '/login.action' ???

我们来看一下struts.xml中的配置:

struts.xml配置信息(部分)

<package name="packageName" extends="struts-default" namespace="/myNameSpace">

<action name="login" class="com.jato.srvclink.test.login.LoginAction" method="login">

是的,我们'/myNameSpace'命名空间下,只有action名字为'login'的定义,并没有所谓的 '/login.action' 定义,所以struts2的警告并未错。如果大家对这个抱有怀疑,可以修改action的名字'login'为‘/longin.action’

<action name="/login.action" class="com.jato.srvclink.test.login.LoginAction" method="login">

请求页面时你会发现不在报警告信息,原因很简单。因为在命名空间为'myNameSpace'下确实存在命名为'/login.action'的action。

我们再次修改配置文件

jsp页面配置信息(部分)修改后action属性值为longin

<s:form action="login" namespace="/myNameSpace">

请求页面时,我们发现不再有警告信息了。

如果你有足够细心,我想你应该可以彻底的明白为什么struts2会报警了吧?你也应该明白了使用struts2标签action中添加/线后请求反而报错的原因了。

建立access的数据库news,还有表news,表的字段(id,title),id唯一,输入数据保存,用下面代码可查询,可分页

-----------------------下面保存为search.asp--------------------------

<html>

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

<title>文件</title>

</head>

<body bgcolor="#ffffff">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<script>

function btn_ck_bh_Click()

{

var cx = document.form1.cxsj.value

form1.action ="search.asp?cx="+cx

}

</script>

<table border="1" cellspacing="0" bgcolor="#F0F8FF" bordercolorlight="#4DA6FF" bordercolordark="#ECF5FF" width="88%" style="word-break:break-all">

<tr>

<td width="778" align="center" colspan="7">

<form method="POST" name="form1" action=search.asp>

<p>输入搜索内容:<input type="text" name="cxsj" size="20"><input type="submit" value="提交" name="B1" LANGUAGE="javascript" onclick="btn_ck_bh_Click()">

<input type="reset" value="重写" name="B2"></p>

</form>

</td>

</tr>

</table>

<table border="1" cellspacing="0" bgcolor="#F0F8FF" bordercolorlight="#4DA6FF" bordercolordark="#ECF5FF" width="88%" style="word-break:break-all">

<tr>

<td width="8%" align="center"><strong><font color="#0080C0">ID 号</font></strong></td>

<td width="58%" align="center"><strong><font color="#0080C0">标 题</font></strong></td>

<td width="8%" align="center"><strong><font color="#0080C0">修 改</font></strong></td>

<td width="8%" align="center"><strong><font color="#0080C0">删 除</font></strong></td>

</tr>

<%

'数据库查询

'获得搜索内容

cx = request("cx")

dim pageCount

'把page转换成整数

page = cint(request("page"))

set conn=server.createobject("adodb.connection")'

set rs=server.createobject("adodb.recordset")

conn.open "DBQ=" &server.mappath("./news.mdb") &"DefaultDir=DRIVER={Microsoft Access Driver (*.mdb)}"

' 获取产品的名字记录集(从 news表中)

if cx <>"" then

sql = "select * from news where title like '%"&cx&"%' order by id desc"

else

sql ="select * from news order by id desc"

end if

rs.open sql,conn,3,3

'如果没有数据记录

if rs.bof then

errmsg=errmsg+"<br>"+"<li>"+keyword+"没有记录,请返回!!"

response.write errmsg

response.end

end if

' 设置记录集在每页的总行数,也就是 PageSize属性

RS.PageSize=40

'把rs.pageCount转换成整数和page才能作比较

pageCount = cint(rs.pageCount)

' 设置当前的页号( AbsolutePage属性)

if page = 0 then

page =1

end if

RS.AbsolutePage = page

x=1

' 显示当前页中的所有记录( PageSize中设置的行数)

WHILE NOT RS.EOF AND NumRows<RS.PageSize

%>

<tr onmouseover="this.bgColor='#99ccff'" onmouseout="this.bgColor=''">

<td width="8%"><p align="center"><%=rs("id")%></td>

<td width="58%"><a href="view.asp?id=<%=rs("id")%>" target="_blank"><%=rs("title")%></a></td>

<td width="8%" align="center"><a href="edit.asp?id="<%=rs("id")%>>修 改</a></td>

<td width="8%" align="center"><a href="delet.asp?id="<%=rs("id")%>>删 除</a></td>

</tr>

<%RS.MoveNext

NumRows=NumRows+1

WEND%>

<tr onmouseover="this.bgColor='#99ccff'" onmouseout="this.bgColor=''">

<td width="105%" align="center" colspan="6"></td></tr>

<tr>

<td width="105%" align="center" colspan="6">

<p align="center"><FONT color=#333333>共<%=PageCount%>页 第<%=page%>页★

<%if page=1 then%>首页<%end if%>

<%if page>1 then%>

<A HREF="search.asp?page=1&cx=<%=cx%>">首页</A>

<%end if%>★

<%if page>1 then%><A HREF="search.asp?page=<%=page-1%>&cx=<%=cx%>"><%end if%>上一页</a>

<%

dim pagewhere

dim p

p = 1

'把pagewhere转换成整数

'pagewhere = cint(request("pagewhere"))

pagewhere = pageCount

if pagewhere>0 then

for p=1 to pagewhere

if p <>page then%>

<A HREF="search.asp?page=<%=p%>&cx=<%=cx%>"><%=p%></a>

<%end if

if p =page then%>

<%=p%>

<% end if

next

end if%>

<%if page <PageCount then%>

<A HREF="search.asp?page=<%=page+1%>&cx=<%=cx%>">

<%end if %>下一页</A>★

<%if page=PageCount then%>尾页

<%end if%>

<%if page<PageCount then%>

<A HREF="search.asp?page=<%=PageCount%>&cx=<%=cx%>">尾页</A>

<%end if%>

</p></FONT></td></tr><tr>

<td width="105%" align="center" colspan="6">搜索内容:<%=cx%></td>

</tr>

</table></center></div>

</body></html>

<%

rs.close

Set rs=nothing

conn.close

set conn=nothing

%>


欢迎分享,转载请注明来源:优选云

原文地址:https://54852.com/hy/981189.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-30
下一篇2023-07-30

随机推荐

  • 珀莱雅海泉保湿的具体价位是多少

    珀莱的海泉保湿效果不如海洋水动力 但便宜嘛 性价比也挺高的 夏天空气湿润 用海泉的水乳就行了 但秋冬的时候海泉的保湿就显得不够了 海泉的瓶子好漂亮 好喜欢水水是49元100ml乳液是55元80ml珀莱雅红宝石。1、功能方面,珀莱雅红

    2023-12-14
    15600
  • 大家用的能遮盖毛孔的什么粉底液好呀

    强烈推荐!!1娥佩兰透气营养粉底液!专柜价65元超赞的啊~!偶就是干皮,用过很多粉底液有vov也有雅芳的都好干啊~!有时候还起皮皮,在杂志上看到这款性价比很高于是就买回来用了,轻薄透气不说还白的很自然呢~!不会有那种起皮皮的现象了!最赞的是

    2023-12-14
    8600
  • 百雀羚护肤品里含有水杨酸吗

    如果泡泡很少,说明营养成分少。如果泡泡多但是大,说明含有水杨酸。水杨酸洁肤效果好,但刺激性大,敏感肌慎用。百雀羚水嫩精纯系列含有“红景天益母草、忍冬花”三种黄金植物的浓缩精华,更蕴含了藏红花、积雪草等草本植物,富含多种丰富的维生素,能提亮肤

    2023-12-14
    8500
  • 好用的面霜有哪些

    你知道所有的明星和护肤达人都会用面霜吗?因为她们知道,面霜的滋润度和抗老紧致效果是所有的护肤品中最好的,所以一定要用面霜。但是在我们生活中,很多人说面霜太油腻,不好用不好吸收,其实说的也对,那是因为你用到了不好用的面霜,真正好用的面霜,吸收

    2023-12-14
    7800
  • 杨幂用什么护肤品

    想要购买脱毛膏首先需要选择好评度较高的产品为宜。薇婷脱毛膏在脱毛效果上面的感觉是比较不错的。而且持久性比较好,不会让肌肤受到损伤。使用过一段时间之后,就会发现这款脱毛膏与其他的产品不同,其中的成分采用的是纯天然的植物萃取,为此,在清洗的时候

    2023-12-14
    7900
  • 什么化妆品最好用

        一、法国LANCOME(兰蔻)    这个法国国宝级的化妆品品牌创立于1935年,迄今已有近70年历史。自创立伊始,就以一朵含苞欲放的玫瑰作为品牌标记。在近70年的时间里,兰蔻以其独特的品牌理念实践着对全世界女性美的承诺,给无数爱美

    2023-12-14
    7700
  • 15岁男孩适合用什么护肤品比较好,15岁青少年护肤品十大名牌

    随着现在时代的变化,爱美不仅仅只是女生的特点了,现在的男生也越来越注重自己的外表样貌了,尤其是护肤。很多男孩子从十几岁开始就懂得了要好好的爱护自己的皮肤,开始使用一些护肤品。那么,15岁男孩适合用什么护肤品比较好,15岁青少年护肤品十大名牌

    2023-12-14
    63300
  • 化妆品排行榜前十名

    化妆品排行榜如下:1、法国兰蔻兰蔻是一家法国奢侈香水和化妆品房,在国际上分销产品。兰蔻是欧莱雅公司奢侈品部门的一部分,该企业是其母公司,以更高的价格提供护肤,香水和化妆品。成立于1935年,由纪尧姆d'Ornano和他在法国的业务

    2023-12-14
    6500
  • 25至30岁适合用哪个牌子的全套护肤品

    不同年龄阶段,当然要用适合的护肤品25-30岁的时候,已经是轻熟肌了 所以要注意肌肤抗衰老以及保湿的诉求 下面推荐些不踩雷的牌子 包你用完后赞不绝口哦黛珂这个

    2023-12-13
    9200

发表评论

登录后才能评论
保存