2017-01-26 4 views
1

Я написал ниже код для вызова сервлета с страницы JSPСервлета нельзя назвать

JSP код;

<form method="post" action="${pageContext.request.contextPath}/Survey" name="_F_Surv"> 


     <button type="submit" name="button" value="button3">Button 3</button> 

    </form> 

Servlet Код

package survey; 

import java.io.IOException; 
import java.io.PrintWriter; 

    import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class Survey 
    */ 
    @WebServlet("/Survey") 
public class Survey extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public Survey() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    response.getWriter().append("Served at: ").append(request.getContextPath()); 
    PrintWriter out = response.getWriter(); 
    out.println("Hello World"); 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    doGet(request, response); 
} 

}

Web, XML

<?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>Struts2 Application</display-name> 
    <servlet> 
    <servlet-name>SimpleCaptcha</servlet-name> 
    <servlet-class>nl.captcha.servlet.SimpleCaptchaServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>SimpleCaptcha</servlet-name> 
     <url-pattern>/simpleCaptcha.jpg</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>Survey</servlet-name> 
     <servlet-class>survey.Survey</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>Survey</servlet-name> 
     <url-pattern>/Survey</url-pattern> 
    </servlet-mapping> 


    <filter> 
     <filter-name>struts2</filter-name> 
     <filter-class> 
      org.apache.struts2.dispatcher.FilterDispatcher 
     </filter-class> 
     </filter> 
     <filter-mapping> 
      <filter-name>struts2</filter-name> 
      <url-pattern>/*</url-pattern> 
    </filter-mapping> 
     <session-config> 
      <session-timeout>1</session-timeout> 
     </session-config> 
     <welcome-file-list> 
      <welcome-file>survey.jsp</welcome-file> 
     </welcome-file-list> 
     </web-app> 

сервлетов не вызывался, когда я нажимаю на кнопку отправки. И я получаю ошибку ниже в консоли

Jan 26, 2017 10:49:55 AM org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler error 
SEVERE: Exception occurred during processing request: null 
java.lang.NullPointerException 
    at org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69) 
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185) 
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63) 
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37) 
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) 
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:557) 
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

Не могли бы вы сообщить мне, какую ошибку я здесь сделал. Заранее спасибо

+1

Как насчет '

'? – BrunoDM

+0

@BrunoDM Цель, скорее всего, не будет использовать относительные пути. – Gimby

+0

Что касается проблемы: на странице с формой просмотрите источник HTML (или используйте инструменты разработки DOM для проверки браузера). Каков фактический путь, который был передан в атрибут действия формы? – Gimby

ответ

0

Проблема заключается в том, что вы определили фильтр для каждого URL-адреса, который попадает в Struts Dispachter. Взгляните на struts2 ignore particular pattern и Can I exclude some concrete urls from <url-pattern> inside <filter-mapping>?, чтобы узнать, как игнорировать URL-адрес фильтра. ИЛИ, смените фильтр, чтобы получить URL-адрес, такой как /struts/*, и измените все ваши действия распорок на этот новый шаблон: /struts/{yourAction}.

+0

Примечание: обычно не рекомендуется подвергать технологию, которую вы используете клиенту. Аудит безопасности может и, вероятно, будет снимать это./actions/* уже может работать. – Gimby

Смежные вопросы