2015-11-28 2 views
0

Я пытался использовать структуру struts2 при создании веб-проектов, когда я столкнулся с проблемой заголовка. Я новичок в stackoverflow, поэтому, если код трудно читать, прошу простить меня. Вот мой struct.xmlДействие формы по умолчанию для литерального значения атрибута 'action'

<struts> 
<package name="default" extends="struts-default" namespace="/"> 
    <action name="login" class="com.mxl.actions.LoginAction"> 
     <result name="success">/success.jsp</result> 
     <result name="input">/login.jsp</result> 
    </action> 
</package> 

А вот мой web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app> 
    <welcome-file-list> 
     <welcome-file>login.jsp</welcome-file> 
    </welcome-file-list> 
    <filter> 
     <filter-name>struts2</filter-name> 
     <filter-class> 
      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
     </filter-class> 
     <init-param> 
      <param-name>struts.i18n.encoding</param-name> 
      <param-value>UTF-8</param-value> 
     </init-param> 
    </filter> 
    <filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>*.action</url-pattern> 
    </filter-mapping> 
    <filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>*.jsp</url-pattern> 
    </filter-mapping> 
</web-app> 

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 

<s:form action="login" method="post"> 
    <s:textfield name="username" label="User Name" 
     cssStyle="width:160px;height:26px;" /> 
    <s:password name="password" label="Pass Word" 
     cssStyle="width:160px;height:26px;" /> 
    <s:submit value="Sign in" /> 
</s:form> 

И наконец LoginAction.java

package com.mxl.actions; 
import com.opensymphony.xwork2.ActionSupport; 
public class LoginAction extends ActionSupport{ 
    private String username; 
    private String password; 
    @Override 
    public String execute() throws Exception { 
     if(username.equals("1") && password.equals("111")){ 
      return SUCCESS; 
     }else{ 
      return INPUT; 
     } 
    } 
    public String getName() { 
     return username; 
    } 
    public void setName(String username) { 
     this.username = username; 
    } 
    public String getPassword() { 
     return password; 
    } 
    public void setPassword(String password) { 
     this.password = password; 
    } 
} 

Когда я нажимаю «Запустить на сервере», проект выглядит отлично, и когда я набираю имя пользователя и пароль, он «404 не найден», URL-адрес превращается в localhost:8080/Struts_try/login. Надеюсь, кто-то может мне помочь.

+0

Я поместил необходимый файл jar в 'WEB-INF/lib' и исправил путь сборки. –

+0

Просто любопытство Вот мой struct.xml это ошибка ввода? должен Вот мой strust.xml – Abdelhak

ответ

0

Предположим, что у вас есть переменная-член name внутри вас класс действия.

При вызове действия конфигурация по умолчанию отображает параметры http, вызывающие установщик. В качестве примера, если вы вызываете localhost:8080/Struts_try/login?name=myName, Struts2 выполнит ваше действие и вызовет метод setName("myName") (если ваше свойство не является строкой, struts2 попытается его преобразовать).

После выполнения действия, когда результаты отображаются в представлении (например, странице JSP), вы можете написать <s:property value='name' />, а Struts2 вызовет метод getName() вашего действия.

Поэтому важно установить и получить значения с помощью геттеров и сеттеров вместо использования переменной-члена напрямую.

+0

Я добавил геттеры и сеттеры в свой .java-файл, и он все еще не работает. –

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