使用Struts 2 开发“用户登录”的基本步骤:
1、加载Struts2 类库
2、配置web.xml
3、开发视图层页面
4、开发控制层Action
5、配置Struts 2的配置文件(struts.xml)
6、部署、运行项目
第一步:加载Struts2 类库:
从官方下载下来的lib目录中有很多jar包,有些jar不是我们程序必须的,没必要加载进来,只需加载项目需要的即可,从而减少程序的开销。
那么哪些jar是我们必须的呢?参看官方下载的apps文件夹中的struts2-blank这个示例程序。这个示例程序提供的Jar就是项目需要的基本jar包。
第二步:配置web.xml:
核心控制器, 需要在web.xml中进行配置,对框架进行初始化,以及处理所有的请求。
注意:struts2不同版本的核心控制器是不同的,如:
2.0版本的核心控制器为org.apache.struts2.dispatcher.FilterDispatcher;
2.1之后的版本普遍采用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。
<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>
注意:该过滤器filter可以包含一些初始化参数,经常使用的如config指定要加载的XML形式的配置文件列表(多个配置文件以逗号分隔),如果没有设置这个参数,会自动加载classes目录下的struts.xml配置文件。
该过滤器会过滤用户请求,如果用户请求以action结尾,则该请求将被输入struts2框架进行处理。
第三步:开发视图层页面-index.jsp、success.jsp
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login page</title>
</head>
<body>
<div>
<s:fielderror name="errormsg" cssStyle="color:red"/>
</div>
<s:form action="login.action">
<div>
<s:textfield name="username" label="用户名"/>
</div>
<div>
<s:password name="password" label="密码"/>
</div>
<s:submit value="提交" />
</s:form>
</body>
</html>
在开发页面时我们应用struts2标签,在使用struts标签时需要注意以下几点:
1、必须引入struts的标签库 <%@taglib prefix="s" uri="/struts-tags"%>
2、struts2的标签都是以"s"为前缀的。
3、可以选择用struts2的UI标签实现页面效果
<s:textfield name="username" label="用户名"/>
注意:我们运行项目查看源代码时发现,生成了如下的html代码,通过表格来固定的画面的样式。
<tr>
<td class="tdLabel">
<label for="login_username" class="label">用户名:</label>
</td>
<td>
<input type="text" name="username" value="" id="login_username"/>
</td>
</tr>
如果上述效果不是你所需要的,那么你可以通过更改struts2的页面默认主题(xhtml风格)为simple,这样就可以根据自己的需要设计页面的布局。在struts.xml中添加如下代码即可。
<constant name="struts.ui.theme" value="simple"/>
4、<s:fielderror name="errormsg" cssStyle="color:red"/>在jsp页面中的这行代码是用来显示服务器端验证错误信息的,name="errormsg" 与java代码 addFieldError(fieldName, errorMessage)方法的参数fieldName对应。addFieldError方法在服务器端设置好错误信息内容,<s:fielderror/>在客户端显示错误提示内容。cssStyle用来设置行内样式,cssClass用以指定css中定义的属性。
5、<s:form action="login.action"> 中action用来指定表单提交给哪个控制器去处理用户的请求。
第四步:开发控制层Action-LoginAction
public class LoginAction extends ActionSupport{
private String username;
private String password;
private final String LOGINUSER = "";
public String execute(){
return SUCCESS;
}
public void validate(){
if("yanln".equals(username)&& "12345".equals(password)){
Map usermap = ActionContext.getContext().getSession();
usermap.put(LOGINUSER, username);
}else{
this.addFieldError("errormsg", "用户名或密码错误");
}
}
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;
}
}
开发Action的方式:
(1)、实现Action接口——接口中有execute方法及5个常量success none error input login
(2)、继承ActionSupport类——可以做数据验证
(3)、普通的Java类 ——只要有一个返回String类型的无参的公共的execute方法.
注意:实际开发中,Action类通常都继承ActionSupport类,以便简化开发。
下面对LoginAction程序说明一下:
1、LoginAction继承了ActionSupport类,重写validate方法做数据验证,重写execute方法做验证通过后的处理。
2、程序首先执行validate方法进行数据验证,如果用户名和密码不满足要求,通过addFieldError("errormsg", "用户名或密码错误");方法设置错误信息内容,在结果跳转时,会找到struts.xml文件中指定input值,来决定跳转到哪个页面。特殊说明:struts2内设数据校验失败时会自动跳转到name为input的<result/>
<result name="input">index.jsp</result>
3、如果用户名和密码满足要求验证通过。我们遇到的项目多数是含有多个页面,项目中多数是要求我们把登录成功的用户名保存到session中去。在struts2中是怎么把它保存到session 中去的呢?
有两种方式能得到session:
(1)、耦合的访问方式:
Struts2提供了直接访问Servlet Api对象的方式
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
session.setAttribute(LOGINUSER, username);
(2)、松耦合的访问方式:
为了避免与Servlet API耦合到一起,方便Action类的测试,Struts框架对Servlet API中的对象进行了封装,构造了对应 Map对象来替代HttpSession.
Map usermap = ActionContext.getContext().getSession();
usermap.put(LOGINUSER, username);
4、针对于execute方法中返回值,当继承了ActionSupport类或实现了Action接口时,都可以直接使用Action中定义的几个结果常量success none error input login
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public String execute(){
return SUCCESS;
}
第五步:配置Struts 2配置文件(struts.xml)
<struts>
<package name="example" namespace="/" extends="struts-default">
<action name="login" class="com.yanln.test.action.LoginAction">
<result name="success">success.jsp</result>
<result name="input">index.jsp</result>
</action>
</package>
</struts>
Struts.xml核心配置文件,主要负责管理Action。通常放在WEB-INF/classes目录下,在该目录下的struts.xml文件可以被自动加载。(也可以放到src根目录下)
<struts>
<constant name="" value=""/>
<package name="" namespace="" extends="">
<action name="" class="">
<result name=""></result>
</action>
</package>
</struts>
constant元素:
用于配置常量,可以改变Struts 2框架的一些行为;name属性表示常量名称,value属 性表示常量值 。如: <constant name="struts.ui.theme" value="simple"/>
package元素 :
包的作用:简化维护工作,提高重用性
包可以“继承”已定义的包,并可以添加自己包的配置
name属性为必需的且唯一,用于指定包的名称
extends属性指定要扩展的包
namespace属性定义该包中action的命名空间 ,为可选属性
action元素:用来指定业务逻辑处理的Action
result元素:用来配置请求返回的结果页
注意:除非有令人信服原因,自定义的包应该总是扩展struts-default包,因为该包中配置了大量常用的struts2的特性,没有这些连简单的在action中获取请求数据都无法完成。
struts-default.xml
Struts 2默认配置文件,会自动加载
struts-default包在struts-default.xml文件中定义
struts-plugin.xml
Struts 2插件使用的配置文件
如果不开发插件,不需要编写该配置文件
加载顺序
struts-default.xml—>struts-plugin.xml—>struts.xml
第六步:部署、运行项目
第一个图标部署项目到tomcat上、第二个图标是启动tomcat
- 大小: 95.3 KB
- 大小: 81.7 KB
- 大小: 1.3 KB
分享到:
相关推荐
Java高级框架应用开发案例教程,主要关注的是Struts2、Spring和Hibernate这三大经典开源框架的整合开发,也称为SSH框架。这些框架是Java企业级应用程序开发中的核心工具,能够帮助开发者实现高效的MVC(Model-View-...
通过本案例,你可以学习到如何创建Struts2应用,配置Action,编写拦截器,使用OGNL进行数据绑定,以及如何处理异常和实现国际化。实践是检验理论的最好方式,通过实际操作,你将对Struts2有更深入的理解。
Struts2 框架应用实例详解 Struts2 框架是一种基于 Java 语言的 Web 应用程序框架,它提供了一个灵活的和可扩展的架构,以帮助开发者快速构建基于 Web 的应用程序。下面是 Struts2 框架应用实例的详细介绍: 一、...
### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...
Struts2是一个强大的MVC(Model-View-Controller)框架,...通过这个案例,你可以深入理解Struts2框架的工作原理以及如何利用它来实现Web应用的基本功能。同时,这也是进一步学习其他高级特性和最佳实践的良好起点。
Struts2是一个开源的Web应用程序框架,基于MVC(Model-View-Controller)架构模式。它为Java Web开发者提供了一个强大的平台来构建高度可扩展的应用程序。Struts2的核心组件包括Action、Interceptor、Result等。 ##...
Struts2是一个强大的Java EE应用程序框架,主要用于构建MVC(模型-视图...通过这个"struts2_damo3"案例,新手可以逐步掌握Struts2框架的基本使用,进一步理解MVC模式在实际开发中的应用,为后续的Web开发打下坚实基础。
Struts2.0框架是Java Web开发中的一款经典MVC(Model-View-Controller)框架,它极大地简化了Web应用的构建,提高了开发效率。本书《Struts2.0框架书籍》显然是一本深入探讨这一框架的专业教程,旨在帮助开发者理解...
学习Struts 2和AJAX框架的组合,有助于开发者构建出响应快速、交互性强的Web应用。Struts 2的强大功能和AJAX的动态特性,使得开发者可以更好地满足用户需求,提升应用的性能和用户体验。在实际开发中,深入理解和...
Struts2是一个强大的Java ...通过分析和学习这个小案例,你可以深入理解Struts2框架的工作原理,如何组织代码,以及如何有效地使用Struts2特性来构建实际的Web应用。同时,这也会帮助你掌握MVC模式在实际开发中的应用。
综上所述,Struts2框架为实现用户注册和登录提供了便捷的途径,通过Action、配置文件、表单验证和JSP页面的组合,可以快速搭建功能完善的用户系统。在实际开发中,还需要根据具体需求和安全规范进行调整和优化。在...
通过分析这个基于Struts2的登录源码,我们可以深入理解Struts2框架的工作原理,学习如何组织MVC架构,以及如何在IDEA中进行Java web开发。同时,这也是一个很好的实践案例,可以帮助开发者掌握用户认证和授权的基本...
在Java Web开发中,"Struts+Hibernate实现用户登录案例"是一个常见的应用场景,它结合了两个重要的技术框架:Struts和Hibernate。Struts是MVC(Model-View-Controller)设计模式的一种实现,用于处理用户的请求和...
这个"Struts2应用案例"涵盖了Struts2的核心概念和实际操作,对于学习和理解Struts2的工作原理以及如何在项目中应用具有重要的参考价值。 在MVC模式中,模型(Model)负责处理业务逻辑,视图(View)负责展示数据,...
这个项目可能包含了Action编写、视图渲染、用户交互、数据验证等基本功能,是学习和理解Struts2框架的一个很好的实践案例。通过分析和运行这个项目,可以深入理解Struts2的工作原理及其在实际应用中的运用。
Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的Web应用程序。它在原有的Struts1基础上进行了大量的改进和优化,引入了更多现代Web开发的需求和最佳实践。Struts2的核心是Action,...
Struts2是一个强大的MVC(Model-View-Controller)框架,是Java EE应用程序开发中的重要组成部分。...通过系统学习,开发者不仅可以了解Struts2的工作原理,还能熟练运用其特性来构建高效、可维护的Web应用。
### Struts2框架概述 #### 1.1 什么是Struts2框架? **Struts2框架** 是一个基于MVC(Model-View-Controller)架构的开源...通过这种方式,Struts2框架不仅简化了开发过程,还确保了应用程序的可维护性和可扩展性。
6. **Tiles框架**(可选):Struts1可以结合Tiles框架进行页面布局,但在这个案例中可能并未使用,因为仅实现了基础的登录功能。 7. **ActionMapping**:定义Action和其对应的处理方法之间的映射关系,通常在`...