当我遇到title的问题时,我正在尝试使用struts2框架制作web项目。我是stackoverflow的新手,所以如果代码难以阅读,请原谅我。 这是我的struct.xml
<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;
}
}
当我点击&#34;在服务器上运行&#34;该项目看起来很好,当我输入用户名和密码时,它会发现&#34; 404 Not Found&#34;网址转为localhost:8080/Struts_try/login
我希望有人可以帮助我。
答案 0 :(得分:0)
假设您在操作类中有成员变量name
。
调用操作时,默认配置会映射调用setter的http参数。例如,如果你调用localhost:8080/Struts_try/login?name=myName
Struts2将实例化你的动作并调用方法setName("myName")
(如果你的属性不是字符串,struts2将尝试转换它)。
执行操作后,当结果显示在视图中(例如,JSP页面)时,您可以编写<s:property value='name' />
,Struts2将调用您操作的方法getName()
。
因此,使用getter和setter设置和获取值非常重要,而不是直接使用成员变量。