Пытается создать приложение Struts2, которое направляет пользователя на страницу (Display.jsp
), которая показывает цвет пользовательской конфигурации цвета RGB. Я приведу пример из учебника Struts2 от Budi Karniawan. Когда я вручную вырезаю и вставляю исходный код и создаю приложение вручную в качестве веб-приложения NB, он работает нормально, хотя параметры RGB вызывают ошибки проверки, несмотря на то, что они вводятся в правильном формате (я проверил, что я вводил с использованием номеров, разделенных запятыми, для RGB, т. Е. Зеленый - 0,255,0). Структура каталога:Struts2 Ошибка при запуске Netbeans 731
Тогда я решил импортировать файл проекта (создание веб-приложения из существующего параметра Sources). Я использовал файл ant build.xml
для компиляции и запуска приложения.
При запуске приложения через имя приложения:
http://localhost:8084/Budi7c
я получаю:
no Action mapped for namespace [/]
Затем я добавляю имя действия отображенный в struts.xml
http://localhost:8084/Budi7c/Design1.action
я получаю HTTP 404. Но приведенная выше ссылка Deisgn1.action работала, когда я пытался создать проект вручную. Может кто-нибудь, пожалуйста, скажите мне, как лучше правильно импортировать и запускать это приложение, учитывая следующие файлы? Я предпочел бы использовать скрипт ant и NOT MAVEN (так как, кажется, существует много проблем, связанных с Struts2 с использованием Maven). Я просто хотел бы знать способ избежать ошибки 404 при попытке запуска действий struts.
Если я попытаюсь создать приложение вручную, проверка ввода завершится неудачно (хотя я вводил числа и разделял их запятыми). Если я попытаюсь импортировать и использовать Ant для обеспечения правильной сборки, я получаю 404.
Приложение выглядит следующим образом:
web.xml
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Restrict direct access to JSPs.
For the security constraint to work, the auth-constraint
and login-config elements must be present -->
<security-constraint>
<web-resource-collection>
<web-resource-name>JSPs</web-resource-name>
<url-pattern>/jsp/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
struts.xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="app07c" extends="struts-default">
<action name="Design1">
<result>/jsp/Design.jsp</result>
</action>
<action name="Design2" class="app07c.Design">
<result name="input">/jsp/Design.jsp</result>
<result name="success">/jsp/Display.jsp</result>
</action>
</package>
</struts>
Color.java
:
package app07c;
import com.opensymphony.xwork2.ActionSupport;
public class Color extends ActionSupport {
private int red;
private int green;
private int blue;
public int getBlue() {
return blue;
}
public void setBlue(int blue) {
this.blue = blue;
}
public int getGreen() {
return green;
}
public void setGreen(int green) {
this.green = green;
}
public int getRed() {
return red;
}
public void setRed(int red) {
this.red = red;
}
public String getHexCode() {
return (red < 16? "0" : "")
+ Integer.toHexString(red)
+ (green < 16? "0" : "")
+ Integer.toHexString(green)
+ (blue < 16? "0" : "")
+ Integer.toHexString(blue);
}
}
Design.java
:
package app07c;
import com.opensymphony.xwork2.ActionSupport;
public class Design extends ActionSupport {
private String designName;
private Color color;
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
public String getDesignName() {
return designName;
}
public void setDesignName(String designName) {
this.designName = designName;
}
}
MyColorConverter.java
:
package app07c.converter;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import app07c.Color;
import com.opensymphony.xwork2.conversion.TypeConversionException;
public class MyColorConverter extends StrutsTypeConverter {
public Object convertFromString(Map context, String[] values,
Class toClass) {
boolean ok = false;
String rgb = values[0];
String[] colorComponents = rgb.split(",");
if (colorComponents != null
&& colorComponents.length == 3) {
String red = colorComponents[0];
String green = colorComponents[1];
String blue = colorComponents[2];
int redCode = 0;
int greenCode = 0;
int blueCode = 0;
try {
redCode = Integer.parseInt(red.trim());
greenCode = Integer.parseInt(green.trim());
blueCode = Integer.parseInt(blue.trim());
if (redCode >= 0 && redCode < 256
&& greenCode >= 0 && greenCode < 256
&& blueCode >= 0 && blueCode < 256) {
Color color = new Color();
color.setRed(redCode);
color.setGreen(greenCode);
color.setBlue(blueCode);
ok = true;
return color;
}
} catch (NumberFormatException e) {
}
}
if (!ok) {
throw new
TypeConversionException("Invalid color codes");
}
return null;
}
public String convertToString(Map context, Object o) {
Color color = (Color) o;
return color.getRed() + ","
+ color.getGreen() + ","
+ color.getBlue();
}
}
Design.jsp
:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Color</title>
<style type="text/css">@import url(css/main.css);</style>
<style>
.errorMessage {
color:red;
}
</style>
</head>
<body>
<div id="global" style="width:450px">
<h4>Color</h4>
Please enter the RGB components, each of which is
an integer between 0 and 255 (inclusive). Separate two components
with a comma. For example, green is 0,255,0.
<s:form action="Design2">
<s:textfield name="designName" label="Design Name"/>
<s:textfield name="color" label="Color"/>
<s:submit/>
</s:form>
</div>
</body>
</html>
Display.jsp
:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Design Details</title>
<style type="text/css">@import url(css/main.css);</style>
<style type="text/css">
.colorSample {
border:1px solid black;
width:100%;
height:100px;
background:#<s:property value="color.hexCode"/>;
}
</style>
</head>
<body>
<div id="global" style="width:250px">
<h4>Design details:</h4>
Design name: <s:property value="designName"/>
<br/>Color code: <s:property value="color"/>
<div class="colorSample"/>
</div>
</body>
</html>
Я попытался изменить веб-содержимое папки из /jsp
в /
так, что структура проекта является такой же, как и структура каталогов. Затем я использую скрипт сборки муравьев для компиляции и запуска проекта и получения следующего стека:
ant -f C:\\struts2\\budi_ebook\\struts2extractb\\app07c -DforceRedeploy=false -Ddirectory.deployment.supported=true -Dnb.wait.for.caches=true run
init:
deps-module-jar:
deps-ear-jar:
deps-jar:
Warning: Program Files (x86)\F-Secure\Anti-Virus\aquarius\fa.log modified in the future.
Warning: Program Files\CommVault\Simpana\Log Files\CVD.log modified in the future.
Warning: Users\ManaarDC\NTUSER.DAT modified in the future.
Warning: Users\ManaarDC\ntuser.dat.LOG1 modified in the future.
Warning: Users\RedGuard_Admin.MANAARNET\AppData\Local\Temp\3\output1375645810208 modified in the future.
Warning: Users\RedGuard_Admin.MANAARNET\AppData\Local\Temp\3\toolbar_log.txt modified in the future.
Warning: Windows\Temp\avg_secure_search.log modified in the future.
Warning: app\ManaarDC\diag\rdbms\orcldw\orcldw\trace\orcldw_dbrm_3148.trc modified in the future.
Warning: app\ManaarDC\diag\rdbms\orcldw\orcldw\trace\orcldw_dbrm_3148.trm modified in the future.
Warning: app\ManaarDC\product\11.2.0\dbhome_1\D5H9RBP1.ManaarNet.com_orclDW\sysman\emd\agntstmp.txt modified in the future.
Warning: app\ManaarDC\product\11.2.0\dbhome_1\D5H9RBP1.ManaarNet.com_orclDW\sysman\log\emagent.trc modified in the future.
Warning: app\ManaarDC\product\11.2.0\dbhome_1\D5H9RBP1.ManaarNet.com_orclDW\sysman\log\emoms.log modified in the future.
Warning: app\ManaarDC\product\11.2.0\dbhome_1\D5H9RBP1.ManaarNet.com_orclDW\sysman\log\emoms.trc modified in the future.
Warning: app\ManaarDC\product\11.2.0\dbhome_1\oc4j\j2ee\OC4J_DBConsole_D5H9RBP1.ManaarNet.com_orclDW\log\em-application.log modified in the future.
Warning: inetpub\logs\LogFiles\W3SVC1\u_ex130804.log modified in the future.
C:\struts2\budi_ebook\struts2extractb\app07c\nbproject\build-impl.xml:841:
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOfRange(Arrays.java:2694)
at java.lang.String.<init>(String.java:203)
at java.lang.String.substring(String.java:1913)
at java.util.StringTokenizer.nextToken(StringTokenizer.java:352)
at org.apache.tools.ant.util.FileUtils.normalize(FileUtils.java:741)
at org.apache.tools.ant.util.FileUtils.resolveFile(FileUtils.java:616)
at org.apache.tools.ant.types.resources.FileResource.<init>(FileResource.java:60)
at org.apache.tools.ant.util.SourceFileScanner$1.<init>(SourceFileScanner.java:96)
at org.apache.tools.ant.util.SourceFileScanner.restrict(SourceFileScanner.java:95)
at org.apache.tools.ant.taskdefs.Copy.buildMap(Copy.java:787)
at org.apache.tools.ant.taskdefs.Copy.scan(Copy.java:744)
at org.apache.tools.ant.taskdefs.Copy.iterateOverBaseDirs(Copy.java:666)
at org.apache.tools.ant.taskdefs.Copy.execute(Copy.java:563)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:392)
at org.apache.tools.ant.Target.performTasks(Target.java:413)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:283)
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:541)
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153)
BUILD FAILED (total time: 12 minutes 5 seconds)
Я всегда создаю проекты struts2 в Netbeans, используя maven ... File-> New Project -> (панель категорий: выберите Maven), (панель проекта: выберите веб-приложение), остальные инструкции следуют: http: // stackoverflow. com/questions/5718418/struts2-netbeans-7 Думаю, я смогу создать пустой проект за пару минут ... загрузка зависимостей в сторону – Quaternion