虽然现在市面上很流行前后端分离,但是在很多企业中还是使用的是SSH框架,前后端不分离。
那么此类前后端有其自身独特的前后台交互的方式,但是也支持js/jquery。下面对这两种方式做一下归纳。
前后端交互
1 通过action表单提交
<%
String abc = request.getParameter("abcno");
String rateid =request.getParameter("rateid");
%>
<s:set name="abc"><%=abc%> </s:set>
<s:set name="rateid"><%=rateid %></s:set>
<s:form action="uploadAction.action" enctype="multipart/form-data" method="post" namespace="/html/abc">
<s:hidden name="abcno" id="abcno" value="%{abc}"></s:hidden>
<s:hidden name="rateid" id="rateid" value="%{rateid}"></s:hidden>
<span id="files"> <s:file name="upload" label="选择附件" />
<p/>
</span>
<!--
<s:checkbox name="type" value="true" lable="示意图" fieldValue="0"></s:checkbox>
<s:checkbox name="type" value="false" lable="照片" fieldValue="1"></s:checkbox>
-->
<s:radio list="%{#{'0':'示意图','1':'照片'}}" theme="simple" name="type"></s:radio>
<s:submit value="上传" style="width:100px" />
</s:form>
此段代码是用来上传图片的,所以定义enctype=”multipart/form-data”。
如果使用的是struts2标签的form,请记得加上action所对应的namespace,否则提交不到对应的action中,使用普通的form标签就不存在指定namespace的问题。
因为是通过超链接带参数跳转到这个页面的,所以用<% %>获取传来的参数,然后< s:set>设置值,以备后面取用。后面两个hidden就是从此处取值。
form中标签的name属性名对应action的成员变量,成员变量应设置setter/getter方法已获取此处传过去的数据。
2.通过jquery的ajax与后台交互
function delPicFunc(filepath,rateid,abcno){
console.log("filepath:"+filepath+",rateid="+rateid+",nrcno:"+nrcno);
var delUrl ="http://localhost:8080/xxx/delPicACtion.action?inputPath="+filepath+"&rateid="+rateid+"&abcno="+abcno;
var encodeUrl = encodeURI(delUrl); //对url进行编码,否则中文作为参数传过去就可能出问题
console.log(encodeUrl);
$.getJSON(encodeUrl, function(data){
alert("删除成功!");
reflesh();
});
}
如果action在struts.xml中设置为 < result name=”success” type=”json” > < / result> 那么data就可以取到其返回的值。具体方法可以在浏览器中输入对应的url,回车之后页面就会显示其返回的json数据。
页面之间的跳转:
1,通过action在struts.xml中的配置
< result name="success" >
/sss/aaa/bbb.jsp
< /result>
跳转到制定页面(地球人都知道)。
2,通过href 跳转
<a href="pages/abcUploadPic.jsp?abcno=<s:property value='abcorderno'/>&rateid=<s:property value='rateid'/>" id="upload" >附件 上传/下载</a>
href中指定要跳转的页面及携带的参数,至于在跳转页面怎么获取参数,此文上面部分有代码,请参考之。注意href中多参数的拼接方式,与url中有所不同。
如果没有逻辑要处理的话,选择href的方式进行页面之间的跳转来的更加灵活。