任务:实现登陆(模拟)功能
分析登录功能的需求
首先展示一个登录页面,允许用户输入用户名和密码。
如果用户输入的用户名和密码符合要求(例如用户名和密码一致),则进入一个欢迎界面。
如果用户输入的用户名和密码不符合要求,则进入一个错误提示页面。

Struts2应用的开发步骤
1、向工程添加Struts2的核心库(在WebContent的lib下添加)

2、在web.xml中配置Struts2的核心StrutsPrepareAndExecuteFilter
<!-- struts2的核心过滤器配置 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3、在src目录下添加Struts2的核心配置文件struts.xml
<struts>
<!-- 一个struts根节点可以包含多个package节点 -->
<!-- 一个package根节点可以包含多个action节点 -->
<!-- 一个action根节点可以包含多个result节点 -->
<package name="example" extends="struts-default">
<!-- name属性用于提交请求时使用,下面表示访问时使用login.action,那么Struts2框架就派loginAction类处理请求 -->
<action name="login" class="vera.example.controller.LoginAction">
<!-- execute方法有几个出口就配置几个result节点 -->
<result name="success">/welcome.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
4、创建控制器组件
实现Action(在LoginAction.java中实现)
只要改动了Action类就要去strust.xml看看,把相对应的东西修改。
package vera.example.controller;
public class LoginAction {
//用户数据,根据input标签的name属性定义成员变量及其getter/setter
public String username;
public String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//处理方法:公有的 返回值为String 无参 名为excute的方法
public String execute(){
//功能:检查用户名与密码是否一致
if(username.equals(password)){
return "success";
}
return "error";
}
}
配置Action(在struts.xml中配置)
<!-- name属性用于提交请求时使用,下面表示访问时使用login.action,那么Struts2框架就派loginAction类处理请求 -->
<action name="login" class="vera.example.controller.LoginAction">
<!-- execute方法有几个出口就配置几个result节点 -->
<result name="success">/welcome.jsp</result>
<result name="error">/error.jsp</result>
</action>
5、创建视图组件(jsp页面)
<form action="login.action">
<table>
<caption>用户登录</caption>
<tr>
<td class="right">用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td class="right">密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="登录">
<input type="reset" value="重填">
</td>
</tr>
</table>
</form>
6、编译、发布、运行
在操作时出现的错误有
1、出现如下情况

解决问题的办法是(勾选Publish module context to separate XML files)

2、出现404错误
原因是在配置核心控制器时,<filter-name>两者的名字不不一致导致的。
网友评论