0

私はいくつかの問題を抱えています。誰かが Struts 2 でこれを解決するのを手伝ってくれるなら、私はそうします。これが私が抱えている問題です。シンプルなログイン アプリケーションを実行すると、次のような間違いがあります。

org.apache.jasper.JasperException: Struts ディスパッチャーが見つかりません。

これは通常、関連付けられたフィルタなしで Struts タグを使用したことが原因です。Struts タグは、このタグに必要な Struts ディスパッチャを初期化するサーブレット フィルタをリクエストが通過した場合にのみ使用できます。- [不明な場所]

ログは次のとおりです。

Advertencia: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception
The Struts dispatcher cannot be found.  This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]
    at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60)
    at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44)
    at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:48)
    at org.apache.jsp.Login_jsp._jspx_meth_s_form_0(Login_jsp.java:99)
    at org.apache.jsp.Login_jsp._jspService(Login_jsp.java:72)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:722)

ファイルツリーは次のとおりです。

            src(es.uniway.action.login as a package and inside this class:
LoginAction.java:

package com.uniway.action.login;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}

}

src の内部にも struts.xml があります。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="false" />

<package name="default" namespace="/" extends="struts-default">

<action name="Login" class="com.uniway.action.LoginAction">
<result name="input">/Login.jsp</result>
<result name="success" type="redirectAction">/index.jsp</result>
</action>


</package>


<!-- Add packages here -->

</struts>

次に、web-infoフォルダーに、次のweb.xmlものがあります。

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>cloud46</display-name>
<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>


 <welcome-file-list>
 <welcome-file>Login.jsp</welcome-file>

 </welcome-file-list>
 </web-app>

その後、WebContent に index.jsp と Login.jsp があり、次のコードがあります。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Sign On</title>
</head>

<body>
<s:form action="Login.action"> 
<s:textfield key="username"/>
<s:password key="password" />
<s:submit method="execute"/>
</s:form>  
</body>
</html>

また、WEB-INF 内の lib フォルダーにあるライブラリーはasm-3.3.jarasm-commons-3.3.jarasm-tree-3.3.jarcommons-fileupload-1.2.2.jarcommons-io-2.0.1.jarcommons-lang3-3.1.jarfreemarker-2.3.19.jarjavassist-3.11.0.GA.jarognl-3.0.5.jar です。お願いします、私が間違っているのは何ですか?struts2-core-2.3.3.jarxwork-core-2.3.3.jar

4

2 に答える 2

1

この変更を行う

<action name="Login" class="com.uniway.action.LoginAction">
<result name="input">/Login.jsp</result>
<result name="success" type="redirectAction">/index.jsp</result>
</action>

<action name="Login" class="com.uniway.action.LoginAction">
     <result name="input">/Login.jsp</result>
     <result name="success">/Login.jsp</result>
</action>
  1. これを変える

    <s:form action="Login.action">

    <s:form namespace="/" action="Login">

  2. 次の変更

    <s:submit method="execute"/>

<s:submit value="Login"/>
于 2012-07-06T18:41:56.953 に答える
0

私は 404.jsp ページでこの問題を抱えていましたが、これが私の解決策でした:

<s:404.jsp ではタグを使用しないでください!!!

理由はわかりませんが、これで問題は解決しました!

于 2014-09-27T13:34:13.913 に答える