Member 8572681 Ответов: 1

Моя программа struts выдает ошибку


Эта программа написана на struts, и я не смог найти ответ нигде в stackoverflow. Во время запуска программы она выдает "nullpointerexception".Это простая программа входа в систему struts, созданная в среде netbeans.

Код выглядит следующим образом:


Что я уже пробовал:

web.xml
-------

***

*

& lt;welcome-file-list>
& lt;welcome-Файл & gt;login.jsp


*

логин.ОСП
---------

&ЛТ;%@taglib в Ури="/веб-инф/распорок-в HTML.дву" префикс="HTML-код" %&ГТ;
< html>
< голова>
в <название>В странице входа в систему&ЛТ;/название&ГТ;
< / head>
& lt;тело>

& lt;html: ошибки/>

& lt;html:form action=" / Login">
Имя пользователя :&ЛТ;HTML-код:текст имя="LoginForm, который будет" собственность="имя пользователя"/&ГТ;
Пароль :&ЛТ;HTML-код:пароль название="LoginForm, который будет" собственность="пароль"/&ГТ;
& lt;html:submit value= "Login" />
< / html: форма>
< / body>
< / html>


struts-config.xml
=================

& lt;struts-config>
& lt;форма-бобы>
&ЛТ;форма-бин наименование="LoginForm, который будет" тип="ком.vaannila.Логинформ" / >
< / форма-бобы>

& lt;action-mappings>
&ЛТ;действия входного="/логин.ОСП" имя="LoginForm, который" путь="/логин" область="сессия" тип="ком.vaannila.LoginAction " >
< forward name= "success" path=" / success.jsp " >
< forward name= "failure" path=" / failure.jsp " >




LoginForm.java
--------------

LoginForm, который будет общественный класс расширяет actionform из{
имя пользователя частной строки;
личный строковый пароль;
public void setuserName(String user)
{
this. userName=пользователь;
}
публичная строка getuserName()
{
вернуть имя пользователя;
}
общественного недействительными задание пароля(строка проходят)
{
это.пароль=пройти;
}
публичная строка getpassword()
{
возврат пароля;
}
общественные акционируются проверки(сопоставление ActionMapping, HttpServletRequest запросу) {
Ошибки акционируются = новый акционируются();
if (userName == null | / userName. length() < 1) {
ошибки.добавить("имя", новый ActionMessage("ошибка.имя пользователя.требуется"));
}
if (password = = null | / пароль.длина () < 1) {
ошибки.добавить("пароль", новый ActionMessage("ошибка.пароль.требуется"));
}
возвращать ошибку;
}

ApplicationResource.свойства
------------------------------

ошибка.имя пользователя.требуется = имя пользователя не требуется.
ошибка.пароль.требуется = пароль.

LoginAction.java
----------------

LoginAction открытый класс расширяет org."Апач".распорки.действий.Действие {

private final static String SUCCESS = " успех";
private final static String FAILURE = " сбой";

public ActionForward execute(сопоставление ActionMapping, форма ActionForm, запрос HttpServletRequest, ответ HttpServletResponse) вызывает исключение {
LoginForm, который будет LoginForm, который будет = (LoginForm, который) форма;
если (LoginForm, который будет.getUserName().равно(LoginForm, который будет.методов getpassword())) {
вернуть отображение.findForward(успех);
} еще {
вернуть отображение.findForward(отказ);
}
}
}

HTTP Status 500 - Внутренняя ошибка сервера
________________________________________
тип отчета об исключении
ошибка messageInternal Server
описание сервер столкнулся с внутренней ошибкой, которая помешала ему выполнить этот запрос.
исключение
класса javax.сервлет.ServletException: java. lang.Исключение NullPointerException
первопричина
Ява.яз.Исключение NullPointerException
Примечание: полные трассировки стека исключения и его первопричины доступны в журналах GlassFish Server Open Source Edition 4.1.
________________________________________
GlassFish Server Open Source Edition 4.1

трассировка стека
----------

Запуск GlassFish на платформе Felix
Aug 09, 2016 11:16: 34 AM com.sun.enterprise.glassfish.bootstrap.osgi.BundleProvisioner createBundleProvisioner
Информация: создать пакет поставщица класс = класс com.солнце.предприятия.в GlassFish.начальной загрузки.OSGi для.BundleProvisioner.
Aug 09, 2016 11:16: 34 AM com.sun.enterprise.glassfish.bootstrap.osgi.BundleProvisioner$DefaultCustomizer getLocations
Предупреждение: пропуск записи, потому что это не абсолютный URI.
Aug 09, 2016 11:16: 34 AM com.sun.enterprise.glassfish.bootstrap.osgi.BundleProvisioner$DefaultCustomizer getLocations
Предупреждение: пропуск записи, потому что это не абсолютный URI.
Зарегистрированный com.солнце.предприятия.в GlassFish.начальной загрузки.OSGi для.EmbeddedOSGiGlassFishRuntime@8bf20b в реестре служб.
Найден населитель: com.sun.enterprise.v3.server.GFDomainXml
#!## LogManagerService.postConstruct : rootFolder=c: программа\файлов\приложений GlassFish-4.1\приложений GlassFish
#!## LogManagerService.postConstruct : templateDir=c: программа\файлов\приложений GlassFish-4.1\\GlassFish в Либ\шаблоны
#!## LogManagerService.postConstruct : СРЦ=С: Program\файлов\приложений GlassFish-4.1\стеклянных\Либ\шаблоны\лесозаготовки.свойства
#!## LogManagerService.postConstruct : дест=С:\Пользователи\ом\папка AppData\роуминг\в NetBeans\8.0.1\конфиг\GF_4.1\домен1\конфиг\лесозаготовки.свойства
Информация: запуск GlassFish версия: GlassFish Server Open Source Edition 4.1 (build 13)
Информация: файл журнала сервера использует класс форматирования: com.sun.enterprise.server.logging.ODLLogFormatter
Инфо: Царство [админ-царство] из типа класса [ком.солнце.предприятия.безопасности.авт.царство.файл.FileRealm] успешно создан.
Информация: Realm [file] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] успешно создан.
Информация: Realm [certificate] of classtype [com.sun.enterprise.security.auth.realm.certificate.CertificateRealm] успешно создан.
Информация: зарегистрировано орг.в GlassFish.ха.магазин.адаптер.кэш.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry
Информация: служба авторизации успешно инициализирована.
Информация: Grizzly Framework 2.3.15 запущен в: 31ms-привязан к [/0.0.0.0:8080]
Информация: Grizzly Framework 2.3.15 запущен в: 0ms-привязан к [/0.0.0.0:8181]
Информация: Grizzly Framework 2.3.15 запущен в: 0ms-привязан к [/0.0.0.0:4848]
Информация: Grizzly Framework 2.3.15 запущен в: 0ms-привязан к [/0.0.0.0:3700]
Информация: посещение непрошеных ссылок
Информация: Java security manager отключен.
Информация: Вход В Службу Запуска Безопасности.
Информация: погрузка политика поставщика ком.солнце.предприятия.безопасности.поставщика.Полисмен.
Информация: Служба безопасности успешно запущена.
Информация: создан http-прослушиватель http-listener-1 на хосте / порту 0.0.0.0:8080
Информация: создан http-прослушиватель http-listener-2 на хосте / порту 0.0.0.0:8181
Информация: дата создания HTTP-прослушиватель админ-слушателя на хост/порт 0.0.0.0:4848
Информация: дата создания виртуального сервера
Информация: создан виртуальный сервер _ _ asadmin
Информация: установка в систему jaas название приложения в GlassFish-веб
Информация: виртуальный сервер сервер загружен веб-модулем по умолчанию
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: посещение непрошеных ссылок
Информация: инициализация Mojarra 2.2.7 ( 20140610-1547 https://svn.java.net/svn/mojarra~svn/tags/2.2.7@13362) для контекста '/ login'
Информация: создайте экземпляр упаковки ActionListener типа ' com.sun.faces.application.ActionListenerImpl'
Информация: HV000001: Hibernate Validator 5.0.0. Final
Информация: загрузка каталога цепочек из jar:file:/C:/Users/OM/Documents/NetBeansProjects/login/build/web/WEB-INF/lib/struts-core-1.3.10.jar!/org/apache/struts/chain/chain-config.xml
Информация: фабрика определения плиток загружена для модуля".
Информация: загрузка файла правил проверки из '/WEB-INF/validator-rules.xml'
Информация: загрузка файла правил проверки из '/WEB-INF/validation.xml'
Информация: загрузка приложения [login] в [/login]
Информация: загрузка логина приложения выполняется за 7,785 МС
Информация: GlassFish Server Open Source Edition 4.1 (13) Время запуска: Felix (7,304 МС), startup services(8,352 МС), total (15,656 МС)
Информация: Grizzly Framework 2.3.15 запущен в: 0ms-привязан к [/0.0.0.0:7676]
Информация: зарегистрированный com.sun.enterprise.glassfish.bootstrap.osgi.EmbeddedOSGiGlassFishImpl@1b88914 как OSGi для регистрационной службы: орг."Апач".Феликс.рамки.ServiceRegistrationImpl@11a03bf.
Информация: JMXStartupService начал JMXConnector на JMXService сервис адрес:интерфейс JMX:РМИ://НИИТ-ПК:8686/как JNDI/РМИ://НИИТ-ПК:8686/jmxrmi
Информация: создан http-прослушиватель http-listener-1 на хосте / порту 0.0.0.0:8080
Информация: Grizzly Framework 2.3.15 запущен в: 0ms-привязан к [/0.0.0.0:8080]
Информация: создан http-прослушиватель http-listener-2 на хосте / порту 0.0.0.0:8181
Информация: Grizzly Framework 2.3.15 запущен в: 0ms-привязан к [/0.0.0.0:8181]
Информация: фабрика определения плиток найдена для процессора запросов".
Предупреждение: форма "LoginForm" не найдена для локали "en_US"
Предупреждение: Resource org/apache/struts/action/ActionResources_en_US. properties не найден.
Предупреждение: Resource org/apache/struts/action/ActionResources_en. properties не найден.
Предупреждение: необработанное исключение: класс java.lang.Исключение NullPointerException
Предупреждение: StandardWrapperValve[action]: Servlet. service() для действия сервлета выдал исключение
Ява.яз.Исключение NullPointerException
на ком.vaannila.LoginAction.выполнить(LoginAction.Ява:26)
в орг."Апач".распорки.действий.RequestProcessor.processActionPerform(RequestProcessor. java:425)
в орг."Апач".распорки.действий.RequestProcessor. process(RequestProcessor. java:228)
в орг."Апач".распорки.действий.ActionServlet.процесс(ActionServlet.Ява:1913)
в орг."Апач".распорки.действий.ActionServlet.doPost(ActionServlet. java:462)
в пакете javax.сервлет.протоколу HTTP.Он полностью реализует интерфейс.сервис(он полностью реализует интерфейс.Ява:707)
в пакете javax.сервлет.протоколу HTTP.Он полностью реализует интерфейс.сервис(он полностью реализует интерфейс.Ява:790)
в орг."Апач".Каталина.ядро.StandardWrapper.обслуживание(StandardWrapper.Ява:1682)
в орг."Апач".Каталина.ядро.StandardWrapperValve.вызов(StandardWrapperValve.Ява:318)
в орг."Апач".Каталина.ядро.StandardContextValve.вызов(StandardContextValve.Ява:160)
в орг."Апач".Каталина.ядро.Стандартпипелин.doInvoke(StandardPipeline. java:734)
в орг."Апач".Каталина.ядро.StandardPipeline.вызов(StandardPipeline.Ява:673)
на ком.солнце.предприятия.веб.WebPipeline.вызов(WebPipeline.Ява:99)
в орг."Апач".Каталина.ядро.StandardHostValve.вызов(StandardHostValve.Ява:174)
в орг."Апач".Каталина.разъем.Койотадаптер.doService(CoyoteAdapter. java:415)
в орг."Апач".Каталина.разъем.CoyoteAdapter.обслуживание(CoyoteAdapter.Ява:282)
в com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
на ком.солнце.предприятия.В3.услуги.осущ.ContainerMapper.обслуживание(ContainerMapper.Ява:167)
в орг.в GlassFish.гризли.протоколу HTTP.сервер.Обработчик HttpHandler.runService(обработчик HttpHandler.Ява:201)
в орг.в GlassFish.гризли.протоколу HTTP.сервер.HttpHandler.doHandle(HttpHandler. java:175)
в орг.в GlassFish.гризли.протоколу HTTP.сервер.HttpServerFilter.handleRead(HttpServerFilter.Ява:235)
в орг.в GlassFish.гризли.filterchain.ExecutorResolver$9. execute(ExecutorResolver. java:119)
в орг.в GlassFish.гризли.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain. java:284)
в орг.в GlassFish.гризли.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain. java:201)
в орг.в GlassFish.гризли.filterchain.DefaultFilterChain.execute(DefaultFilterChain. java:133)
в орг.в GlassFish.гризли.filterchain.DefaultFilterChain.процесс(DefaultFilterChain.Ява:112)
в орг. глассфиш. гризли.ProcessorExecutor.выполнить(ProcessorExecutor.Ява:77)
в орг.в GlassFish.гризли.НИО.транспорт.TCPNIOTransport.fireIOEvent(TCPNIOTransport.Ява:561)
в орг.в GlassFish.гризли.стратегии.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.Ява:112)
в орг.в GlassFish.гризли.стратегии.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy. java:117)
в орг.в GlassFish.гризли.стратегии.WorkerThreadIOStrategy. access$100(WorkerThreadIOStrategy. java:56)
в орг.в GlassFish.гризли.стратегии.WorkerThreadIOStrategy$WorkerThreadRunnable. run(WorkerThreadIOStrategy. java:137)
в орг.в GlassFish.гризли.класса ThreadPool.AbstractThreadPool$Worker.doWork (AbstractThreadPool. java:565)
в орг.в GlassFish.гризли.класса ThreadPool.AbstractThreadPool$Worker. run(AbstractThreadPool. java:545)
на Яве.Нить.выполнения(резьба.на Java:745)

1 Ответов

Рейтинг:
6

OriginalGriff

Это одна из самых распространенных проблем, которые нам задают, и это также та, на которую мы меньше всего готовы ответить, но вы больше всего готовы ответить сами.

Позвольте мне просто объяснить, что означает ошибка: Вы попытались использовать переменную, свойство или возвращаемое значение метода, но оно содержит null - что означает, что в переменной нет экземпляра класса.
Это немного похоже на карман: у вас есть карман в рубашке, в котором вы держите ручку. Если вы сунете руку в карман и обнаружите, что там нет ручки, вы не сможете подписать свое имя на листе бумаги - и вы получите очень смешные взгляды, если попытаетесь! Пустой карман дает вам нулевое значение (здесь нет ручки!), поэтому вы не можете сделать ничего такого, что обычно делали бы, когда извлекли свою ручку. Почему он пуст? Вот в чем вопрос - может быть, вы забыли взять ручку, когда уходили из дома сегодня утром, или, возможно, вы оставили ручку в кармане вчерашней рубашки, когда снимали ее вчера вечером.

Мы не можем сказать, потому что нас там не было, и, что еще важнее, мы даже не можем видеть вашу рубашку, не говоря уже о том, что находится в кармане!

Вернемся к компьютерам, и вы каким - то образом сделали то же самое-и мы не можем увидеть ваш код, а тем более запустить его и узнать, что содержит null, когда это не должно быть.
Но вы можете - и Visual Studio поможет вам здесь. Запустите свою программу в отладчике, и когда она выйдет из строя, VS покажет вам строку, на которой она обнаружила проблему. Затем вы можете начать смотреть на различные его части, чтобы увидеть, какое значение равно null, и начать просматривать свой код, чтобы выяснить, почему. Поэтому поставьте точку останова в начале метода, содержащего строку ошибки, и снова запустите программу с самого начала. На этот раз VS остановится перед ошибкой и позволит вам изучить, что происходит, пройдя через код, глядя на ваши значения.

Но мы не можем этого сделать - у нас нет вашего кода, мы не знаем, как его использовать, если бы он у нас был, у нас нет ваших данных. Так что попробуйте - и посмотрите, сколько информации вы сможете узнать!