在servlet工作原理中输出文件后,如何再跳转到新页面

jsp中Servlet处理请求后转到一个jsp页面的解决办法
jsp中的Servlet处理请求后一般都会做请求重定向或转发的处理,很多初学者会碰到很多问题,通过本人的总结,给出以下解决办法:
1.重定向:一般我们要根据我们的Web应用名称来写,如重定向到WebRoot根目录下的login.jsp,我们可以这么写,response.sendRedirect("/Web应用名称/login.jsp");但是,这样写有一个bug,就是当你改变Web应用名称的时候,跳转就失败了,所以Web应用名称不能写死,我们知道,request.getContextPath()能够获取到Web应用的名称,所以可以这样写response.sendRedirect(""+request.getContextPath()+"/login.jsp");
2.请求转发:请求重转发就比较简单,用
request.getRequestDispatcher("/index.jsp").forward(request,
response);就行
3.还有一种情况,当一个Servlet处理请求后,我们可能还要让这个Servlet再连接到另外一个servlet,这时我们可以用javascript技术,例如:
response.setContentType("text/charset=utf-8");//这里是防止出现乱码,很重要的
response.getWriter().print( "
&script& location.href=
'"+request.getContextPath()+"/servlet/xxxxxxServlet';
&/script& ");
4.还有一种情况,当一个jsp页面是由一个servlet请求转发过来的,那么在这个jsp页面中如果想去访问另外一个servlet,此时,只需要这样写:&script&
location.href= 'xxxxxxServlet';
&/script& "这样就ok了。
这里还有很重要的一点,由于WEB-INF目录下的所有文件是受保护的,所以在WEB-INF目录下的文件要互访的话只能同过ssh中的技术实现,否则只能通过servlet来实现互访。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Servlet中用forward将参数传递到jsp页面后,新页面怎么就没有了CSS的效果?
站内搜索: 请输入搜索关键词
→ Servlet中用forward将参数传递到jsp页面后,新页面怎么就没有了CSS的效果?
Servlet中用forward将参数传递到jsp页面后,新页面怎么就没有了CSS的效果?
摘要: Servlet中用forward将参数传递到jsp页面后,新页面怎么就没有了CSS的效果?
如题目所言。我用servlet的forward将servlet中操作生成的参数传到了另外一个Jsp页面,这个jsp页面接受参数以后,会检索数据库,生成数据再现实。一切都没有问题了,就是检索数据库后生成的这个页面,却怎么样也没有了CSS的效果,很难看。不知道是什么原因。部分代码:RequestDispatcher requestdispatch=this.getServletConfig().getServletContext().getRequestDispatcher("/simple/test/test.jsp?hql="+urlTo);requestdispatch.forward(request,response);有人遇到过这样的情况么!??尽情大家指教!!!谢谢!难道你的CSS样式表是从数据库里面提出来的??先检查test.jsp里面是否有样式读到的testjsp文件,里面有css的地址。地址也是正确的。但是这个testjsp文件自己生成的位置似乎是不正确的。所以要修改css文件在jsp中的import地址,可以解决。问题是:难道要每次都这样修改啊?有没有什么办法可以让这个test文件的地址和以前的地址是一样的?大家一起进来讨论讨论啦。你的servlet转发使用的是绝对地址,所以你test文件中对css文件的使用也需要使用绝对地址,看看你的引用地址是怎么写的楼上的解决方案可能是正确的首先说说: 问题我已经解决了。用了response的sendRedirect()方法吧地址和参数传过去了,就都没有问题了。css的效果也出来了。可是,还是这个问题,我想继续讨论下去。问题一:那个servlet转发的地址(最上面我贴出来)是绝对地址没错,就是那样的,myPorject/simple/test/test.jsp。一开始我以为在转向地址里面写上../simple/test/test.jsp可是错了,后来就写成了上面的那种方式,结果对了。为什么会这样呢?问题二:我在网上看到一些文章说RequestDispatcher 的forward是转向url中不能带参数的,可是我在上面那样直接在后面带上了参数传递,其参数确实传递过去了。只是没有了css而已。这又是为什么呢?问题三:我在sendRedirect的地址里写的是:../simple/test/test.jsp,也就是说我前面试验阶段写在forward里面的,(因为在forward里面这么写了,反而出错了),我以为在redirect里面这样写会出错,结果,我错了。我这么写,反而对了,但是写成/simple/test/test.jsp反而就报错。我知道这是绝对地址的问题,为什么有这样?问题四:最后就是为什么用了redirect可以找到css而RequestDispatcher却不能?有兴趣大家讨论讨论,反正结分的时候,大家都有份吧!要是没有人在继续说话了,那我就结帖了。。。。参与一下下RequestDispatcher是重定向 必须使用绝对路径 你用../是无用的redirect 里才有../方法我遇见过,css的目录前面加上这个:&%=request.getContextPath()%&/XXX.css自己查一下redirect和forward的区别如何在servlet中实现弹出提示框,之后跳转_百度知道
如何在servlet中实现弹出提示框,之后跳转
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
调用gerWriter() 把script输出到页面response.getWriter().out(&&script&alert(\&hello world!\&);&/script&&) ;&页面就会弹出 hello world! &&要学会分清楚应用程序的系统边界:在 JSP 中有一些代码是在服务器上执行的,而另一些代码则是在客户端执行的。当然你也可以通过 跳转页面来实现,response.getSendRedirect(跳到那个jsp页面的名称) ;&
采纳率:96%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。怎么样将servlet中的内容输出到另外一个jsp页面中去啊?_百度知道
怎么样将servlet中的内容输出到另外一个jsp页面中去啊?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
将要输出的内容保存为对象(变量/数组/泛型/集合)都行,保存到session/application/request中。然后在JSP页面中${ session/application/request }取值就行就行。forward跳转,可以直接保存request.setAttribute(&任意名字&,对象名)中。response.sendRedirect(&url&)需要保存在session或者application。或者直接输出:PrintWriter out = response.getWriter();out.println(&html代码
以及要输出的内容&);
PrintWriter out = response.getWriter();out.println(&该用户已经存在!&);我要输出这句话到 xx.jsp中,该如何写呀??
你要的效果是一个页面跳到另一个页面对么?那么改为:request.setAttribute(&msg&,&该用户已经存在!&);request.getRequestDispatcher(&需要跳转的JSP页面(如:/index.jsp)&).forward(request,response);其中/index.jsp
/ 代表根目录中存在的index.jsp页面,如果index.jsp页面在根目录下的子目录,需要加上子目录名
/子目录名/index.jsp
才行然后在index.jsp页面中获取信息:获取到的信息:${msg}
没显示出来 ,jsp文件中 如何写??&% ${msg} %&??
${msg}是EL表达式。不同于&%= %&这样的JSP表达式,
EL表达式获取对象直接
如果对象名是一个实体类(封装类)
还可以${对象名.属性}
不需要&% ${msg} %&这样获取的。在编写WEB的时候。jsp页面中不能出现java代码。这是MVC模式的宗旨。而且EL表达式更灵活。具体的就不多说了。去搜索相关资料就行了。所以的java代码都是在Dao中处理或者Servlet中处理的,然后直接把结果输出给jsp页面对象名就和那个msg一样
采纳率:29%
request.getRequestDispatcher(&xx.jsp&).forward(request, response);
为您推荐:
其他类似问题
您可能关注的内容
servlet的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。如何从servlet当中跳转到jsp页面,并把数据传送过去。 - 第1页 - 网络编程 - 速达社区 - 简约版
& 如何从servlet当中跳转到jsp页面,并把数据传送过去。
假如我的servlet从数据库中取出用户名为zhangsan,密码为123456。并且把用户名显示到result.jsp页面中去。请问如何实现?我是个菜鸟,刚学jsp,请多关照。 查了些资料代码如下: RequestDispatcher & d & = & request.getRequestDispatcher( &result.jsp &); d.forward(request,response); 但是forward当中的两个参数怎么设置阿?result.jsp怎么显示阿?请高手给个例子。
该回复于 18:48:00被管理员或版主删除
就是当前servlet里的req & 和res
该回复于 18:48:00被管理员或版主删除
package & com.monkey. import & javax.servlet.*; import & javax.servlet.http.*; import & java.io.*; import & java.util.*; public & class & mainServlet & extends & HttpServlet & {
& & & &private & static & final & String & CONTENT_TYPE & = & &text/ & charset=GB2312 &;
& & & &//Initialize & global & variables
& & & &public & void & init() & throws & ServletException & {
& & & &//Process & the & HTTP & Get & request
& & & &public & void & doGet(HttpServletRequest & request, & HttpServletResponse & response) & throws
& & & & & & & & & & & &ServletException, & IOException & {
& & & & & & & &RequestDispatcher & rd & = & request.getRequestDispatcher( &hello.jsp &);
& & & & & & & &String & name & = & &tom &;
& & & & & & & &request.setAttribute( &id &,name);//存值
& & & & & & & &rd.forward(request,response);
& & & &//Process & the & HTTP & Post & request
& & & &public & void & doPost(HttpServletRequest & request, & HttpServletResponse & response) & throws
& & & & & & & & & & & &ServletException, & IOException & {
& & & & & & & &doGet(request, & response);
& & & &//Clean & up & resources
& & & &public & void & destroy() & {
& & & &} } //----------------------------------------- hello.jsp里面 String & id & = & (String)request.getAttribute( &id &);
楼上很清楚了}

我要回帖

更多关于 servlet是线程安全的吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信