jsp页面跳转传值中怎样写一个方法跳转至controller-CSDN论坛

10:20 提问
java执行完方法后怎么跳转到jsp
function submitForm1() {
var id = document.getElementById("userId").
if(id == ''){
alert("id不允许为空!");
$.post("/mission/abc", $('#newForm').serialize(), function(data) {//"/user/save"
/*alert("您还没有登录");*/
if(data.state == 'noLogin') {
alert("皇上,您还没有登录,点击确定跳转到登录界面");
window.location.href = "../user/login.jsp";//"/user/logintext.jsp";
if(data.state == 'success'){
alert("添加成功");
location = "../user/login.jsp";//"userManager.jsp";
document.location.reload();
}, "json");
@Before(AjaxLoginInterceptor.class)
public void abc(){
String type = getPara("type");
String sex = getPara("sex");
String num = getPara("num");
String money = getPara("money");
String content = getPara("content");
/*String hours = getPara("hours");
String min = getPara("min");*/
/*createTime = hours + ":" +*/
title = type + createTime + num +
setAttr("title", title);
setAttr("type", type);
setAttr("personNum", num);
setAttr("content", content);
setAttr("sex", sex);
/*setAttr("createTime", createTime);*/
setAttr("money", money);
//renderJsp("newMission.jsp");
System.out.println("abc");
Mission mission = getModel(Mission.class, "mission");
if(mission.get("id") == null) {
mission.set("id", IDGeneUtil.getRandNum(6));
mission.set("status", "发布");
mission.set("title",title);
mission.set("type",type);
mission.set("content",content);
mission.set("personNum",num);
mission.set("sex",sex);
/*mission.set("createTime",createTime);*/
mission.set("money",money);
mission.set("userId", getSessionAttr("loginUser"));
mission.save();
} else if(mission.getInt("id") & 0) {
mission.update();
/*renderJsp("../mission/mission.jsp");*/
forwardAction("/mission");//("/mission");
public class AjaxLoginInterceptor implements Interceptor {
public Map res = new HashMap();//用来存放返回的数据(json)
public void intercept(ActionInvocation ai) {
Controller ctl=ai.getController();
String loginUser = ctl.getSessionAttr("loginUser");
// 判断是否登录过
if(loginUser == null || loginUser.equalsIgnoreCase("")) {
res.put("state", "noLogin");
//返回保存结果
ctl.renderJson(res);
System.out.println("Before ajaxlogin action invoking");
ai.invoke();//对action的调用
System.out.println("After ajaxlogin action invoking");
现在拦截器好使了-但是点完发布页面不跳转了-但是数据库能存上-不知道怎么回事-新手-求解答
按赞数排序
你的submitForm1方法是ajax方法,他是根据返回值进行跳转的;而forwardAction("/mission")是直接跳转的;这两个是不应该在一起使用的。
比如说你想调用ajax 后 走完流程 如果想动态的跳转 这样写:
String url = "";
url = "地址/xxxxx.jsp?flag=true";
==================前台================
function(data){
location.href=
设置data.state 值返回到ajax方法中在跳转到页面
其他相关推荐匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。2602人阅读
1.问题来源场景介绍:
列表页展示:
新增项目页面展示:
在项目列表展示页面中,点击”添加“按钮,可以跳转到新建项目页面.当新增页面只能从指定某一个列表展示页面中跳转过来时,只需要在返回按钮对应的超链接地址中写明项目列表展示页的访问路径既可实现跳转到上一次访问的页面.如下:
class="link back" href="list.ht"&返回&
问题关键点:
当多个页面中均有”添加“按钮,即可以从多个页面跳转到新建项目页面时,以上方法便不能奏效了.
2.问题分析:
(1)项目工程介绍
出现问题的项目采用的SSM框架进行的开发,并且jsp页面都是放置在WEB-INF目录下,如图:
所以,不可以直接访问jsp页面,都必须通过Controller实现跳转,才可以进行访问指定的jsp页面.也正是因为这一种原因,不可以使用window.history.back().
(2)处理思路:
在访问项目列表展示页时,在对应的Controller方法中,获取到对应项目列表展示页的访问路径,并将该路径带回到项目列表展示页中;
在项目列表展示页中对应的添加按钮上,将访问路径作为参数传递给访问新建项目对应的Controller方法中;
在Controller方法中获取到访问路径,然后再将访问路径带回到新建项目列表对应的jsp页面中,在返回按钮对应的href参数赋值时,取出访问路径的值.既可以实现跳转到上一次访问的页面.
(1)访问项目列表jsp页面对应的Controller方法:
@RequestMapping("list2")
public ModelAndView list2(HttpServletRequest request,HttpServletResponse response) throws Exception
String preUrl= request.getRequestURI();
List& list=newItemService.getAll(filter);
ModelAndView mv=this.getAutoView().addObject("itemList",list).addObject("returnUrl", preUrl);
(2)在项目展示列表对应的jsp页面中,在添加按钮对应的href属性中取出访问路径:
class="link add" href="edit.ht?returnUrl=${returnUrl}"&添加&
(3)访问新增项目jsp页面对应的Controller方法:
@RequestMapping("edit")
public ModelAndView edit(HttpServletRequest request) throws Exception
String url=RequestUtil.getSecureString(request,"returnUrl");
Long id=RequestUtil.getLong(request,"id");
String returnUrl=RequestUtil.getPrePage(request);
NewItem item =newItemService.getById(id);
return getAutoView().addObject("item",item)
.addObject("returnUrl",returnUrl)
.addObject("url", url);
(4)在新建项目对应的jsp页面中,在返回按钮对应的href属性中取出访问路径:
&c:set var="ctx" value="${pageContext.request.contextPath}" /&
&a class="link back" href="${ctx}${url}"&返回&/a&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:89252次
积分:1209
积分:1209
排名:千里之外
原创:42篇
转载:20篇
(8)(9)(13)(16)(15)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'2011年3月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。重定向与请求转发的区别:
重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重 定向后,request内的对象将无法使用。
jsp 页面跳转的几种方法
1. RequestDispatcher().forward()请求转发
在服务器端起作用,当使用forward()时,Servlet传递HTTP请求从当前的Servlet或者是JSP到另外的一个Servlet、JSP 或普通HTML文件,即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递. 但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比 如servlet?name=frank,这样不行,可以程序内通过response.setAttribute(&name&,name)来传至下一个
页面。请求转发后浏览器地址栏URL不变。
例:在servlet中进行请求转发
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
response.setContentType(&text/ charset=gb2312&);
ServletContext sc = getServletContext();
RequestDispatcher rd =
rd = sc.getRequestDispatcher(&/index.jsp&); //请求转发的页面
rd.forward(request, response);
request.getRequestDispatcher(& /index.jsp &).forward(request, response);//转发到index .jsp getServletConfig().getServletContext().getRequestDispatcher(&/index.jsp &).forward(request, response); //转发到 index .jsp
通常在servlet中使用,不在jsp中使用。
2. response.sendRedirect()
在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.
重定向后在浏览器地址栏上会出现重定向页面的URL,即地址栏会发生改变。
例:在servlet中重定向
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
response.setContentType(&text/ charset=gb2312&);
response.sendRedirect(&/index.jsp&);
由于response是jsp页面的隐含对象,故在jsp页面中可用response.sendRedirect()直接实现重定向。
(1) 使用response.sendRedirect时,前面不能有HTML输出;
这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说 JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前, 有少量的HTML输出也是允许的。
(2) response.sendRedirect之后,建议紧跟一句return。
我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。
(1) RequestDispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
(2) response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。
前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher().forward()方法。
在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使HttpServletResponse.sendRequest()方法。
3. <jsp:forward page=&& />
它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。
如果在之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。
它不能改变浏览器地址,刷新的话会导致重复提交
4. 修改HTTP header的Location属性来重定向
通过设置直接修改地址栏来实现页面的重定向。
jsp文件代码如下:
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = &/newpath/jsa.jsp&;
response.setHeader(&Location&,newLocn);
5. JSP中实现在某页面停留若干秒后,自动重定向到另一页面
在html文件中,下面的代码:
<meta http-equiv=&refresh& content=&300; url=target.jsp&>
它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。
由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。代码:
String content=stayTime+&;URL=&+URL;
response.setHeader(&REFRESH&,content);
Js 页面跳转(父页面,外层页面,本页面)
&window.location.href&、&location.href&是本页面跳
&parent.location.href&是上一层页面跳转
&top.location.href&是最外层的页面跳转
举例说明:
如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js这样写
&window.location.href&、&location.href&:D页面跳转
&parent.location.href&:C页面跳转
&top.location.href&:A页面跳转
如果D页面中有form的话,
: form提交后D页面跳转
: form提交后弹出新页面
: form提交后C页面跳转
: form提交后A页面跳转
关于页面刷新,D 页面中这样写:
&parent.location.reload();&: C页面刷新 (当然,也可以使用子窗口的 opener 对象来获得父窗口的对象:window.opener.document.location.reload(); )
&top.location.reload();&: A页面刷新
6、Js 控制页面跳转的几种方法
&script language=&javascript& type=&text/javascript&&
window.location.href=&login.jsp?backurl=&+window.location.
&script type = &text/javascript&&window.location=&./qiantai/main.jsp&;&/script&
&script language=&javascript&&
alert(&返回&);
window.history.back(-1);
&script language=&javascript&&
window.navigate(&top.jsp&);
&script language=&JavaScript&&
self.location='top.htm';
&script language=&javascript&&
alert(&非法访问!&);
top.location='xx.jsp';
&script type=&text/javascript&&
// 页面若在框架内,则跳出框架
if (self != top) {
top.location = self.
自定义时间跳转(方法一):
&script language=&javascript&&
var secs = 3; //倒计时的秒数
function Load(url){
for(var i=i&=0;i--)
window.setTimeout('doUpdate(' + i + ')', (secs-i) * 1000);
function doUpdate(num)
document.getElementById('ShowDiv').innerHTML = '将在'+num+'秒后自动跳转到主页' ;
if(num == 0) { window.location = URL; }
然后在里面加上 index.asp为自己要跳转的页面。在之间加上
自定义时间跳转(方法二):
&p style=&text-indent: 2 margin-top: 30&&
系统将在 &span id=&time&&5&/span& 秒钟后自动跳转至新网址,如果未能跳转,&a href=&http://www.jb51.net& title=&点击访问&&请点击&/a&。
&script type=&text/javascript&&
delayURL();
function delayURL() {
var delay = document.getElementById(&time&).innerHTML;
var t = setTimeout(&delayURL()&, 1000);
if (delay & 0) {
document.getElementById(&time&).innerHTML =
clearTimeout(t);
window.location.href = &http://www.jb51.net&;
部分借鉴别的博客!!
本文已收录于以下专栏:
相关文章推荐
1.定时跳转或者原地刷新
优点:简单
缺点:Struts
Tiles中无法使用
对于刷新当前页面js控制为:
window.location.reload(); //刷新当前页面,重新向服...
1. RequestDispatcher.forward()
  在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet或者是JSP到另外的...
初衷:将登录用户的用户名 密码form提交到页面2(jsp就是servlet  提交到servlet的就不说了) 由页面2判断用户名密码的正确性继而决定跳转的方向 下面是几种实现方法
使用href超...
PHP被许多程序员用来开发WEB的首选语言。在实际开发中,网站的各项功能都可以通过PHP语言的编写来满足,比如PHP页面跳转这一方法。
探讨PHP变量解析顺序如何获取提交数据 深入解读PHP...
java servlet 几种页面跳转的方法,需要的朋友可以参考一下
当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面。
1) redirect ...
利用javascript实现页面跳转的几种方法
直接跳转式:
  window.location.href='url';
window....
本文转自:探讨PHP页面跳转几种实现技巧
Web系统中,从一个网页跳转到另一个网页,是LAMP项目中最常用的技术之一。页面跳转可能是由于用户单击链接、按钮等引发的,也可能是系统自动产生的。 此处...
初衷:将登录用户的用户名 密码form提交到页面2(jsp就是servlet  提交到servlet的就不说了) 由页面2判断用户名密码的正确性继而决定跳转的方向 下面是几种实现方法
使用href超...
Web系统中,从一个网页跳转到另一个网页,是LAMP项目中最常用的技术之一。页面跳转可能是由于用户单击链接、按钮等引发的,也可能是系统自动产生的。 此处介绍PHP中常用的实现页面自动跳转的方法。
PHP页面跳转几种实现方法
PHP页面跳转一、header()函数
header()函数是PHP中进行页面跳转的一种十分简单的方法。header()函数的主要功能是将HTTP协议标头(...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 jsp点击跳转页面 的文章

 

随机推荐