forward()和之间的概念差异是sendRedirect()什么?
我正在使用net beans 7.1,我创建了一个带有两个servlet文件的JSP文件.喜欢
index.jsp ---> servlet1.java ---> servlet2.java
我从index.jsp文件中提供一些价值并发送给servlet1.java.
在这个servlet1.java文件中我调用servlet2.java文件.
然后它抛出NullPointerException.
我怎么解决这个问题?
我的代码是这样的.
<form action="servlet1" method="post">
Run Code Online (Sandbox Code Playgroud)
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
..................
..................
..................
servlet2 ob=new servlet2();
ob.doPost(request, response);
..................
..................
..................
}
Run Code Online (Sandbox Code Playgroud)
然后它抛出NullPointerException.
我有两个Web应用程序说App1和App2.我想从App1中的servlet调用App2中的servlet.我正在使用URLConnection.我也能够将参数传递给App2中的servlet,我也能够从servlet接收响应作为字符串.但我想从App2中的servlet发送java对象,并在App1的servlet中接收它们.怎么做到这一点?
我们知道JSP被转换为Servlets,Servlet用于Buisines逻辑,JSP用于视图等.但从理论上讲,您可以使用servlet完成JSP所做的大部分工作.反之亦然.
但有没有什么可以用Servlet实现而不用JSP实现,反之亦然?
我在一次采访中得到了这个问题,但是经过大量的谷歌搜索没有找到任何答案.
假设我提交了一个简单页面(该页面没有参数,没有表单等,并且无法向该页面添加任何内容),最后我进入了第一个servlet。现在,我确定是时候在第二个servlet中进行处理了。第二个servlet需要填充一堆参数和表单字段,因此首先我需要在第一个servlet中进行设置,然后弄清楚如何将这些东西添加到第二个servlet中。当我尝试向参数映射中添加某些内容时,它出错了,“不允许对锁定的参数映射进行任何修改”(这是JSP的工作方式)。我当时在想也许我应该实例化另一个请求对象,但是我不确定该怎么做(并确保自己远离热水)。如果在第一个servlet中,我曾经能够用所有“正确的东西”构造一个请求对象,那么我 d需要使用该请求运行第二个servlet,并让我进入第二个servlet将我重定向到的任何页面。我认为那只是一个response.sendRedirect();
如何获得第一个servlet中定义的其他参数和内容,以便在执行sendRedirect时,第二个servlet具有所需的一切?
如何编写过滤器类以将响应从一个servlet传递到另一个servlet以及GET参数?
这是我尝试过的概要(我从这个问题中得到了大部分内容)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TranslateFilter implements Filter {
private FilterConfig config = null;
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
public void destroy() {
config = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
..
RequestDispatcher dispatch = request.getRequestDispatcher("/Translate");
dispatch.forward(request, response);
..
}
}
Run Code Online (Sandbox Code Playgroud)
这在web.xml中
<servlet-mapping>
<servlet-name>process</servlet-name>
<url-pattern>/Process
</servlet-mapping>
<servlet-mapping>
<servlet-name>translate</servlet-name>
<url-pattern>/Translate
</servlet-mapping>
<filter-mapping>
<filter-name>processChain</filter-name>
<servlet-name>process</servlet-name>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
但它并没有奏效.它不会转发到第二个servlet.我没有调试环境设置,所以我不知道它在哪里失败,但是有人能指出我正确的方向吗?