`

二、通过《用户登录案例》学习struts2框架的应用

阅读更多

使用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

    Java高级框架应用开发案例教程,主要关注的是Struts2、Spring和Hibernate这三大经典开源框架的整合开发,也称为SSH框架。这些框架是Java企业级应用程序开发中的核心工具,能够帮助开发者实现高效的MVC(Model-View-...

    struts2框架案例

    通过本案例,你可以学习到如何创建Struts2应用,配置Action,编写拦截器,使用OGNL进行数据绑定,以及如何处理异常和实现国际化。实践是检验理论的最好方式,通过实际操作,你将对Struts2有更深入的理解。

    完整的struts2框架应用实例.docx

    Struts2 框架应用实例详解 Struts2 框架是一种基于 Java 语言的 Web 应用程序框架,它提供了一个灵活的和可扩展的架构,以帮助开发者快速构建基于 Web 的应用程序。下面是 Struts2 框架应用实例的详细介绍: 一、...

    struts2框架学习笔记整理

    ### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...

    struts2登陆案例

    Struts2是一个强大的MVC(Model-View-Controller)框架,...通过这个案例,你可以深入理解Struts2框架的工作原理以及如何利用它来实现Web应用的基本功能。同时,这也是进一步学习其他高级特性和最佳实践的良好起点。

    Struts2框架笔记

    Struts2是一个开源的Web应用程序框架,基于MVC(Model-View-Controller)架构模式。它为Java Web开发者提供了一个强大的平台来构建高度可扩展的应用程序。Struts2的核心组件包括Action、Interceptor、Result等。 ##...

    struts2简单案例

    Struts2是一个强大的Java EE应用程序框架,主要用于构建MVC(模型-视图...通过这个"struts2_damo3"案例,新手可以逐步掌握Struts2框架的基本使用,进一步理解MVC模式在实际开发中的应用,为后续的Web开发打下坚实基础。

    Struts2.0框架书籍

    Struts2.0框架是Java Web开发中的一款经典MVC(Model-View-Controller)框架,它极大地简化了Web应用的构建,提高了开发效率。本书《Struts2.0框架书籍》显然是一本深入探讨这一框架的专业教程,旨在帮助开发者理解...

    Struts 2及AJAX框架的详细介绍

    学习Struts 2和AJAX框架的组合,有助于开发者构建出响应快速、交互性强的Web应用。Struts 2的强大功能和AJAX的动态特性,使得开发者可以更好地满足用户需求,提升应用的性能和用户体验。在实际开发中,深入理解和...

    struts2小案例

    Struts2是一个强大的Java ...通过分析和学习这个小案例,你可以深入理解Struts2框架的工作原理,如何组织代码,以及如何有效地使用Struts2特性来构建实际的Web应用。同时,这也会帮助你掌握MVC模式在实际开发中的应用。

    struts2配置 用户注册登录

    综上所述,Struts2框架为实现用户注册和登录提供了便捷的途径,通过Action、配置文件、表单验证和JSP页面的组合,可以快速搭建功能完善的用户系统。在实际开发中,还需要根据具体需求和安全规范进行调整和优化。在...

    基于struts2的登录源码,采用IDEA编写

    通过分析这个基于Struts2的登录源码,我们可以深入理解Struts2框架的工作原理,学习如何组织MVC架构,以及如何在IDEA中进行Java web开发。同时,这也是一个很好的实践案例,可以帮助开发者掌握用户认证和授权的基本...

    Struts+Hibernate实现用户登录案例

    在Java Web开发中,"Struts+Hibernate实现用户登录案例"是一个常见的应用场景,它结合了两个重要的技术框架:Struts和Hibernate。Struts是MVC(Model-View-Controller)设计模式的一种实现,用于处理用户的请求和...

    Struts2应用案例

    这个"Struts2应用案例"涵盖了Struts2的核心概念和实际操作,对于学习和理解Struts2的工作原理以及如何在项目中应用具有重要的参考价值。 在MVC模式中,模型(Model)负责处理业务逻辑,视图(View)负责展示数据,...

    留言板留言板struts2留言板struts2

    这个项目可能包含了Action编写、视图渲染、用户交互、数据验证等基本功能,是学习和理解Struts2框架的一个很好的实践案例。通过分析和运行这个项目,可以深入理解Struts2的工作原理及其在实际应用中的运用。

    Struts2入门案例 实现简单的Struts2入门jar包.rar

    Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的Web应用程序。它在原有的Struts1基础上进行了大量的改进和优化,引入了更多现代Web开发的需求和最佳实践。Struts2的核心是Action,...

    黑马程序员_struts2框架开发2016版讲义和笔记资料_day01_day02_day03_day04

    Struts2是一个强大的MVC(Model-View-Controller)框架,是Java EE应用程序开发中的重要组成部分。...通过系统学习,开发者不仅可以了解Struts2的工作原理,还能熟练运用其特性来构建高效、可维护的Web应用。

    黑马程序员_struts2框架2016版视频_struts2_day01笔记

    ### Struts2框架概述 #### 1.1 什么是Struts2框架? **Struts2框架** 是一个基于MVC(Model-View-Controller)架构的开源...通过这种方式,Struts2框架不仅简化了开发过程,还确保了应用程序的可维护性和可扩展性。

    仅使用了struts1框架

    6. **Tiles框架**(可选):Struts1可以结合Tiles框架进行页面布局,但在这个案例中可能并未使用,因为仅实现了基础的登录功能。 7. **ActionMapping**:定义Action和其对应的处理方法之间的映射关系,通常在`...

Global site tag (gtag.js) - Google Analytics