标签: requestdispatcher

java.lang.IllegalStateException:在提交响应后不能(转发| sendRedirect |创建会话)

抛出此方法

java.lang.IllegalStateException:在提交响应后无法转发

我无法发现问题.有帮助吗?

    int noOfRows = Integer.parseInt(request.getParameter("noOfRows"));
    String chkboxVal = "";
    // String FormatId=null;
    Vector vRow = new Vector();
    Vector vRow1 = new Vector();
    String GroupId = "";
    String GroupDesc = "";
    for (int i = 0; i < noOfRows; i++) {
        if ((request.getParameter("chk_select" + i)) == null) {
            chkboxVal = "notticked";
        } else {
            chkboxVal = request.getParameter("chk_select" + i);
            if (chkboxVal.equals("ticked")) {
                fwdurl = "true";
                Statement st1 = con.createStatement();
                GroupId = request.getParameter("GroupId" + i);
                GroupDesc = request.getParameter("GroupDesc" + i); …
Run Code Online (Sandbox Code Playgroud)

servlets response forward illegalstateexception requestdispatcher

90
推荐指数
3
解决办法
26万
查看次数

从servlet使用sendRedirect时,请求属性在jsp页面中不可用

我是jsp和servlet的新手.我的方案如下

我有一个jsp页面,里面有一个表单.有两个字段.jsp页面的代码snipet如下.

MyFirstJSP.jsp文件

<body>
<h1> This is my first jsp and servlet project</h1>
<%
//System.out.println(request.getAttribute("fname"));

if(request.getAttribute("fname")!=null){
    System.out.println(request.getAttribute("fname"));
}else{
    System.out.println("No request ");
}
%>
<form action="MyFirstServlet" method="get">
First Name<input type="text" name="fname" value= ${fname}><br>
Last Name<input type="text" name="lname" value= ${lname}>
<input type="submit" value="Send">
</form>
</body>
Run Code Online (Sandbox Code Playgroud)

当我提交此表单时,会调用MyFirstServlet来检查用户输入的名字.如果第一个名称等于"abc",则servlet将该属性设置为请求对象,并将其重定向到调用jsp页面,即上面的页面.这将从请求对象获取值并将其填入表单的相应字段.我也有Java表达式语言,效果相同.

这是我的MyFirstServlet.java servlet文件的代码snipet

/**
 * Servlet implementation class MyFirstServlet
 */
public class MyFirstServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public MyFirstServlet() {
    super();
    // TODO Auto-generated constructor stub …
Run Code Online (Sandbox Code Playgroud)

jsp servlets response.redirect requestdispatcher

7
推荐指数
2
解决办法
5万
查看次数

RequestDispatcher - 何时提交响应?

我在学习RequestDispatcher时正在编写一些基本代码.我知道当调用rd.forward()时,控制(和响应处理)将被转发到路径中指定的资源 - 在本例中是另一个servlet.但是为什么由于代码中前面的out.write()语句,这段代码不会抛出IllegalStateException(不是我想要的)?

我想我真正要问的是,这些out.write()语句将如何或何时提交?

谢谢,杰夫

public class Dispatcher extends HttpServlet{
  public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws IOException, ServletException{

    response.setContentType("text/plain");
    PrintWriter out = response.getWriter();
    out.write("In Dispatcher\n");

    String modeParam = request.getParameter("mode");
    String path = "/Receiver/pathInfo?fruit=orange";
    RequestDispatcher rd = request.getRequestDispatcher(path);
    if(rd == null){
        out.write("Request Dispatcher is null. Please check path.");
    }
        if(modeParam.equals("forward")){
            out.write("forwarding...\n");
            rd.forward(request, response);
        }
        else if(modeParam.equals("include")){
            out.write("including...\n");
            rd.include(request, response);
        }
    out.flush();
    out.close();
}
Run Code Online (Sandbox Code Playgroud)

}

java servlets commit requestdispatcher

7
推荐指数
1
解决办法
9840
查看次数

使用RequestDispatcher将数据从servlet传递到另一个servlet

我试图使用RequestDispatcher将数据从一个servlet传递到另一个servlet.这是Dispatcher的代码.

String address;

address = "/Java Resources/src/coreservlets/MapOut.java";

RequestDispatcher dispatcher =
  request.getRequestDispatcher(address);
dispatcher.forward(request, response);
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,它给出了一个错误,说路径不可用.我是否必须包含一些东西供调度员发送到另一个servlet?

servlets requestdispatcher

6
推荐指数
1
解决办法
3万
查看次数

如何在WEB-INF文件夹中隐藏JSP文件?

在一个简单的Java Web应用程序中,例如,假设您有一个servlet TestServlet.java.在部署描述(web.xml)中,您可以将请求映射/testpage 到TestServlet,以便在/testapplication/testpage请求时TestServlet处理请求.例如,您可以编写"Hello World"并发送响应.

在目录结构(部署到Web服务器的应用程序)中,TestServlet.java将驻留在:

webapps\testapplication\WEB-INF\classes\com\packagename\TestClass.java
Run Code Online (Sandbox Code Playgroud)

这意味着无法使用浏览器访问此文件.(比如输入网址)

您还可以获取请求调度程序并将请求和响应对象转发到JSP文件,如.getRequestDispatcher("/test.jsp").但那时文件就会出现

webapps\testapplication\test.jsp
Run Code Online (Sandbox Code Playgroud)

所以连接到http:\\ server.com\test.jsp也会得到这个文件.

我想在WEB-INF文件夹中隐藏文件,因此除了我提供的映射之外,客户端无法访问它.

这样做的适当方法是什么?

jsp servlets web-inf requestdispatcher

6
推荐指数
1
解决办法
4189
查看次数

servlet中的Requestdispatcher:forward方法不保留请求属性

这是我的prog1:

public class DispatcherSample extends HttpServlet
{
    public void service(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
    {
        PrintWriter out=response.getWriter();
        out.println("we are in first servlet.");
        request.setAttribute("name","sanjay");
        RequestDispatcher rd=request.getRequestDispatcher("/ss");
        rd.forward(request,response);
        }
}
Run Code Online (Sandbox Code Playgroud)

这是我的prog2:

public class SecondServlet extends HttpServlet
{
    public void service(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
    {
        PrintWriter out=response.getWriter();
        out.println("we are in second servlet.");
        request.setAttribute("surname","korlepara");
        //RequestDispatcher rd=request.getRequestDispatcher("/ts");
        //rd.forward(request,response);
        out.println(request.getAttribute("name"));
        out.println(request.getAttribute("surname"));
    }
}   
Run Code Online (Sandbox Code Playgroud)

OUTPUT是:我们在第二个servlet中.null korlepara

问题是:无法检索属性名称

java servlets requestdispatcher

5
推荐指数
1
解决办法
2076
查看次数

org.springframework.web.servlet.PageNotFound noHandlerFound; 警告:在DispatcherServlet中找不到带URI的HTTP请求的映射

我经历了很多论坛和博客以获得答案,但无法得到任何有用的提示或建议.所以,如果有人可以在下面的问题上提供帮助,那将是一个很大的帮助.

尝试连接时,我收到以下警告和错误http://localhost:8080/SpringApp/hello:

INFO: Server startup in 6935 ms
Jul 19, 2014 11:15:42 AM org.springframework.web.servlet.PageNotFound noHandlerFound
WARNING: No mapping found for HTTP request with URI [/SpringApp/] in DispatcherServlet with name 'HelloWeb'
Jul 19, 2014 11:16:29 AM com.example.java.HelloController printHelloWorld
INFO: HelloController : printHelloWorld : ENTER
Jul 19, 2014 11:16:29 AM com.example.java.HelloController printHelloWorld
INFO: HelloController : printHelloWorld : EXIT
Jul 19, 2014 11:16:29 AM org.springframework.web.servlet.PageNotFound noHandlerFound
WARNING: No mapping found for HTTP request with URI [/SpringApp/WEB-INF/jsp/hello.jsp] in DispatcherServlet with name 'HelloWeb' …
Run Code Online (Sandbox Code Playgroud)

spring-mvc http-status-code-404 requestdispatcher

5
推荐指数
2
解决办法
3万
查看次数

来自 servletcontext 的 RequestDispatcher 与请求

这两行代码有什么不同,我们应该什么时候使用它们?

1.

RequestDispatcher view = request.getRequestDispatcher(“result.jsp”);
Run Code Online (Sandbox Code Playgroud)

2.

RequestDispatcher view = getServletContext().getRequestDispatcher(“/result.jsp”);
Run Code Online (Sandbox Code Playgroud)

servlets requestdispatcher

5
推荐指数
1
解决办法
2514
查看次数

如何将requestdispatcher转发到远程URL

我有一个http://www.mywebapp.com/sample.html从远程服务器使用的HTML页面.我在同一HTML表单中将HTML URL作为隐藏表单传递给

<form action="/myservlet?userid=12345" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Submit">
<input type="hidden" name="url" value="http://www.mywebapp.com/sample.html"/>
</form>
Run Code Online (Sandbox Code Playgroud)

在我的servlet中,我得到了隐藏的URL http://www.mywebapp.com/sample.html并将其存储为 String fieldValue = http://www.mywebapp.com/sample.html

现在,当我尝试RequestDispatcher将页面转发到这样的隐藏URL时,

RequestDispatcher rd = req.getRequestDispatcher(fieldValue);
rd.forward(req, resp);
Run Code Online (Sandbox Code Playgroud)

我明白了ERROR 404.

任何人都可以建议我解决这个问题.

EDITED

我真正想做的是,从远程服务器,HTML页面将请求我的REST Web服务.Web服务的响应将以JSON输出.现在我想将此JSON响应发送到请求的HTML表单(即到远程服务器HTML页面)

任何人都可以提出解决这个问题的想法.我们将不胜感激.

java rest web-services servlets requestdispatcher

4
推荐指数
3
解决办法
3万
查看次数

在将请求从servlet发送到jsp之后,我们能以某种方式更改地址栏中的url

我在这里遇到一个奇怪的问题,我真的被困住了,需要把这项工作搞得很糟糕.

所以我有一个页面说index.jsp,链接说"a href = servlet?id = 10".当我点击这个链接时,它将转到我的servlet上的doGet(),这是我的servlet中的代码.

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                 String action = request.getParameter("id");
                  // search database and create an arraylist
                        if(//user logged in)
                        address = "s/results.jsp";
                        else   
                        address = "results.jsp";
                   // set arraylist in session object
                RequestDispatcher dispatcher = request.getRequestDispatcher(address);
                dispatcher.forward(request,response);
     }
Run Code Online (Sandbox Code Playgroud)

所以上面的代码工作正常,但在请求转发后,我的浏览器显示网址为

http:// localhost/project/servlet?id = 10.

我不想要上面的网址,因为我根据用户登录状态转发到两个不同的jsp,一个位于's'文件夹中,而另一个位于该文件夹之外.如果用户已登录,则我转发到's/results.jsp',如果用户未登录,我将转发到'results.jsp'.

在s/results.jsp的情况下,我通过在results.jsp中使用../来访问's'文件夹外部的图像和脚本等资源.

由于url没有更改为s/results.jsp,我无法使用'../'访问资源,因为我正在使用jsp分页,当我点击下一步时,url正在更改为s/results.jsp并且我可以使用../访问资源

我认为一个解决方案是复制s文件夹中的所有资源,但这会增加冗余.

在我的脑海中另一个解决方案是为两个jsp创建两个不同的servlet但我不知道在哪里放置servlet以便它可以使用../访问s文件夹之外的资源

是他们能做任务的其他好方法..

我试图找到有关这方面的信息,但一直无法弄清楚.

任何帮助将非常感谢.

java jsp servlets requestdispatcher

3
推荐指数
1
解决办法
9364
查看次数