Struts2实现登陆功能Demo

struts2demo框架学习例子 一个struts2的框架学习例子,计算两数相加相减的结果,主要是给初学者了解一下struts2框架的基础使用 立即下载

最近在学习SSH框架,通过用struts实现一个简单的登陆功能,来学习struts相关知识,着重了解了struts的配置。

1、在Eclipse下创建StrutsDemo项目,并将struts2所必须的jar包导入lib目录下。

主要有如下7个jar包:commons-fileupload、commons-io、freemarker、javassiat、ognl、struts2-core、xwork。

2、在src目录下建立一个struts.xml文件用于配置struts。

struts.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <!-- struts2的action必须放在一个指定的包空间下定义 -->
    <package name="default" namespace="/" extends="struts-default">
        <action name="login" class="com.demo.LoginAction" method="execute">
            <result name="success">/WEB-INF/success.jsp</result>
            <result name="login">/WEB-INF/login.jsp</result>
        </action>
    </package>

</struts>

主要属性说明:

package-name:用于区别不同的package;必须是唯一的、可用的变量名;用于其它package来继承;

package--namespace:用于减少重复代码(和struts1比较);包的namespace属性用于定义该包的命名空间,命名空间作用为访问该包下的action路径的一部分。namespace属性可以不配置,如果不指定该属性,默认的命名空间为””。

package--extends:用于继承其它package以使用里面的过滤器等东东;

action--name:用于在一个package里区别不同的action;必须是唯一的、可用的变量名;是调用action时输入路径的组成部分;

action--class:action所在的路径(包名+类名);

action--method:action所调用的方法名;

action元素method属性,默认值为method=”execute”,也就是当action接收到请求后,交给哪个方法去处理,默认的是交给execute方法去处理,当然,也可以交给其他方法。

通常每个包都应该继承struts-default包,因为struts2很多核心功能都是拦截来实现的。如从请求中把请求参数封闭到action、文件上传和数据验证等都是通过拦截器实现的。

struts-default定义了这些拦截器和Result类型,可以这么说,当包继承了struts-default才能使用struts2提供的核心功能,struts-default包是在struts2-core-2.xx.jar文件中的struts-defalut.xml中定义。struts-default.xml也是struts2默认配置文件,struts2每次都会自动加载struts-default.xml文件。

result元素主要定义视图的跳转和返回的行为及类型。

常用开关的介绍
<constant name="struts.i18n.encoding" value="UTF-8"/>指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法

<constant name="struts.action.extension" value="do"/>该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。    如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。   

<constant name="struts.serve.static.browserCache " value="false"/>设置浏览器是否缓存静态内容,默认值为true,开发阶段最好false

<constant name="struts.configuration.xml.reload" value="true"/>当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false,开发阶段最好true

<constant name="struts.devMode" value="true"/>开发模式下设为true,这样可以打印出更详细的错误信息

<constant name="struts.enable.DynamicMethodInvocation" value="false"/>动态方法调用,可以解决多个请求对应一个Servlet的问题,后面详细讲解,默认为true,关闭则设为false.


3、在web.xml中加入struts2 MVC框架启动配置

web.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

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

	<welcome-file-list>
		<welcome-file>/WEB-INF/index.jsp</welcome-file>
	</welcome-file-list>
</web-app>
4、在src目录下新建LoginAction类。

LoginAction.java代码如下:

package com.demo;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = -1438866827399732426L;
	
	private String username;
	private String password;
	
	@Override
	public String execute(){
		System.out.println("run execute...");
		if("admin".equals(username) && "123456".equals(password)){
			return SUCCESS;
		}
		return LOGIN;
	}
	
	
	public String getUsername(){
		return username;
	}
	
	public void setUsername(String name){
		this.username = name;
	}
	
	public String getPassword(){
		return password;
	}
	
	public void setPassword(String password){
		this.password = password;
	}
}

注:LoginAction类继承了ActionSupport类,并且在execute方法的返回里,使用了SUCCESS和LOGIN变量。它们俩对应的值分别为:success、login(小写)。所以,在struts.xml里配置的result的name属性里,必须写为小写。要不然,会报"Could not find action or result"的错误。

LoginAction有两个属性,Struts会自动把输入框中的内容通过getter、setter方法设置进来。

提交数据后,struts会自动调用execute方法。

返回值代表结果页面的名称,具体文件路径在配置文件中配置。

ActionSupport类的作用 :struts2不要求我们自己设计的action类继承任何的struts基类或struts接口。但是我们为了方便实现我们自己的action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重写此类里的public String execute() throws Exception方法。因为此类中实现了很多的实用借口,提供了很多默认方法,这些默认方法包括国际化信息的方法、默认的处理用户请求的方法等,这样可以大大的简化Acion的开发。 

Struts2中通常直接使用Action来封装HTTP请求参数,因此,Action类里还应该包含与请求参数对应的属性,并且为属性提供对应的getter和setter方法。


5、创建login.jsp页面和success.jsp页面

login.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="login" method="post">
    <s:label value="系统登陆"></s:label>
    <s:textfield name="username" label="账号" />
    <s:password name="password" label="密码" />
    <s:submit value="登录" />
</s:form>

</body>
</html>
success.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>欢迎<s:property value="username"/>!</h2>
</body>
</html>
6、经过上述步骤,登录实例已经编写完毕。运行效果如下图:

登陆界面:在访问的时候加了action后缀,我这里不加就访问不了。照说应该是不加也行的。


登陆成功界面:


7、总结:对struts2进行了入门学习,尤其仔细看了struts配置的相关资料。学习struts是掌握SSH的第一步。千里之行,始于足下嘛。


Struts2示例demo Struts示例demo 立即下载

相关推荐

Struts2Demo

基于最新appche官网的struts-2.3.15.3编写的demo,只包含HelloWorld例子及配置,适合入门级别参考、学习

struts2_demo.rar_Java编程_Java_

struts2_demo是一个非常适合struts2初学者的入门实例。里面包括了10个小故事,每个故事都针对一个经典的知识点:第一个故事,讲述如何在Struts2.0里开发你的Hello world第二个故事,模拟登陆,主要是看formbeean对象在action里怎么用第三个故事,操作调用自己的方法,而不是execute()第四个故事,处理一个form多个submit第五个故事,关于struts2.0的验证框架第六个故事,关于struts2.0的多文件上传第七个故事,关于struts2.0的单个文件上传第八个故事,关于struts2.0的批量处理第九个故事,关于struts2.0里的get提交传递参数的问题第十个故事,关于CRUD相信只要你了解这十个故事,定然知道这是一份不可多得的真正的循序渐进的入门教程。

struts2入门demo

struts2入门案例是我本人自己写的入门小案例,可以使用。适合刚接触或者准备学习struts2的同事拿来看看

Struts2 ---- 案例 Demo

一  、   基本步骤 :   1. 引用的Jar包文件  : dependency> groupId>junitgroupId> artifactId>junitartifactId> version>3.8.1version> scope>testscope> dependency> dependency> groupId

weixin_36024620的博客 344

Struts2demo

自己动手做的Struts2demo,开启SSH之路,你也动手开始吧

Struts2框架完成登录操作案例

一个简单的登录案例思路分析 在这个案例中,我们要使用struts2框架怎样解决  重点: struts2框架如何完成原来由servlet完成的工作。 Struts2框架如何完成请求参数的封装处理 Struts2框架如何完成页面跳转。   简单登录案例原型 需要三个jsp页面 login.jsp success.jsp failer.jsp 还需要一个ser

学亮编程手记 6688

Struts2简单登录使用(两种方法)

功能示意图如下: 1.在浏览器输入http://localhost:8000/struts_day02/login/form或http://localhost:8000/struts_day02/login/form.action 显示登录页面 2.输入用户名和密码,点击登录按钮,有两种情况,用户名或密码错误,此时会在当前登录页显示错误信息,若登录成功则跳转到成功页面(两种页面显示如...

荒的博客 1144

Struts2登陆Demo

通过Struts2实现登陆的小案例 源码下载地址:https://coding.net/u/gxs1225/p/Struts2_Login/git 代码如下: struts.xml struts> package name="mypackage" namespace="" extends="struts-default"> action name="login

lz155的博客 369

java struts2拦截器_JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现...

一、自定义拦截器1.架构2.拦截器创建//拦截器:第一种创建方式//拦截器生命周期:随项目的启动而创建,随项目关闭而销毁public class MyInterceptor implements Interceptor{}//创建方式2: 继承AbstractInterceptor -> struts2的体贴//帮我们空实现了init 和 destory方法. 我们如果不需要实现这两个方法,...

weixin_42150745的博客 218

java struts2 demo,struts2入门例子 登陆demo!非常详细的图解

1.下载所需的jar包下载地址:https://struts.apache.org/download.cgi#struts25101下载完后解压,在lid文件夹里面找以下这几个jar包,基本功能就只需要这些复制这些jar包到你新建的web项目WebContent/WEB-INF/lib下右击你的web项目如图:在WEB-INF/lib目录下有你刚才复制过来的jar包全部选中点击OK,jar就全部导...

weixin_39974223的博客 156

struts2经典demo

初学sturts2最适合的demo示例.(含注释,含jar包)

JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现...

一、自定义拦截器   1.架构      2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implements Interceptor{} //创建方式2: 继承AbstractInterceptor -> struts2的体贴 //帮...

depiaozhanyou66348的博客 246

struts2入门例子 登陆demo!非常详细的图解

1.下载所需的jar包 下载地址:https://struts.apache.org/download.cgi#struts25101

北冥有鱼丶 3213

使用struts2实现简单的登陆,熟悉struts2流程,附详细注释源码

@author 中文demo站:quankeURL http://www.cndemoz.com 【本demo知识要点】Struts 2Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用...

中文demo站博客 243

Struts2初级教程02 登陆demo ModelDriven

一.使用ModelDriven Action 在Struts2中提供另一种直接使用领域对象的方法,就是Action实现com.opensymphony.xwork2.ModelDriven接口,可以让你直接操作应用程序中的领域对象. ModelDriven接口中只有一个方法,如: public T getModel();该方法返回一个用于接收用户输入数据的模型对象,在页面中,这个模型对象中的

maguochao1989的专栏 312

java2ee 拦截器_JAVAEE——自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现...

一、自定义拦截器1.架构2.拦截器创建//拦截器:第一种创建方式//拦截器生命周期:随项目的启动而创建,随项目关闭而销毁public class MyInterceptor implements Interceptor{}//创建方式2: 继承AbstractInterceptor -> struts2的体贴//帮我们空实现了init 和 destory方法. 我们如果不需要实现这两个方法,...

weixin_42329733的博客 225
上一篇: Servlet实现带验证码登陆功能Demo
下一篇: Intersection of Two Linked Lists
dutsoft
博客等级 码龄14年 97粉丝 215原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值