java管理和用户用一个入口登录_五、基于Struts的MVC案例:用户登录

通过上一部分内容的学习,我们已经能完全看懂简单的Struts程序,并且知道通过增加Action来增加业务功能的实现,通过struts.xml实现路由映射,并通过JavaBean来传递数据。

本着应用就是最好的复习,我们用来做一个基于Struts的登录功能。在本案例中我们将运用所学习到的知识,尽量把Model、View以及Controller都明确划分出来。

a10bd441f521

执行过程示意图

因此,我们需要完成以下任务:

1.userLogin.jsp:为用户提供一个登录入口页面;

2.web.xml:引入Struts框架jar,并声明一个Struts的拦截器;

3.struts.xml:定义一个Struts框架的配置文件,用于配置实现URL与Action之间的路由映射。

4.User.java:实现一个Model,用于作为通信过程中传递参数的载体;

5.UserLoginAction.java:实现一个Action,用于处理用户登录验证的请求;

6.success.jsp:用户登录成功后,跳转的页面;

7.error.jsp:用户登录失败后,跳转的页面。

1.userLogin.jsp

userLogin.jsp:为用户提供一个登录入口页面,用户在此页面填写用户名username和密码password,并以表单形式POST到loginAction中处理;

pageEncoding="UTF-8"%>

用户登录页面

用户名:

密 &nbsp &nbsp码:

2.web.xml

为了使用Struts框架,需要在项目的Web.xml中配置一个Struts拦截器,用于拦截用户的所有请求。

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

userLogin.jsp

3.struts.xml

请求被Struts拦截器获取后,需要到struts.xml中寻找路由映射,从URL地址映射为Action业务处理类。

在项目的Java Resources—>src文件夹下,新建struts.xml。代码如下:

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

/success.jsp

/error.jsp

4.User.java

在处理业务之前,为了实现JSP页面与Action之前的数据传输,需要先定义一个JavaBean实体类,作为传输参数的载体。

根据上一部分所学习可知,Struts框架建议使用包来管理Action,因此我们需要现在src下新建一个名为cn.demo.domain,用于存放所有JavaBean实体类。然后,在该包下新建User.java实体类。代码如下:

package cn.demo.domain;

public class User {

private String username;

private String password;

// username的getter和setter方法

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

// password的getter和setter方法

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

5.UserLoginAction.java

Action业务处理类通过继承ActionSupport实现请求的获取响应,并包含一个User对象,用于存储JSP页面请求发送过来的参数对象。

根据上一部分所学习可知,Struts框架建议使用包来管理Action,因此我们需要现在src下新建一个名为cn.demo.action的包,用于存放所有Action业务处理类。然后,在该包下新建继承于ActionSupport的UserLoginAction类。

(注意:

要继承ActionSupport父类,就需要引入命名空间:

import com.opensymphony.xwork2.ActionSupport;

要调用ActionContext上下文对象,就需要引入命名空间:

import com.opensymphony.xwork2.ActionContext;

要调用自定义实体类User,就需要引入命名空间:

import cn.demo.domain.User;

)*

代码如下:

package cn.demo.action;

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ActionContext;

import cn.demo.domain.User;

public class UserLoginAction extends ActionSupport {

//1.定义User属性

private User user;

// 2.user属性的getter和setter方法

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

//3.重写父类的execute()方法

public String execute() throws Exception {

//获取Context对象

ActionContext context = ActionContext.getContext();

if ("itcast".equals(user.getUsername())

&& "123".equals(user.getPassword())) {

//将用户名和密码放入session中

context.getSession().put("username", user.getUsername());

context.getSession().put("password", user.getPassword());

return SUCCESS;

} else {

context.getSession().put("error", "用户登录失败!");

return ERROR;

}

}

}

6.success.jsp

若登录验证成功,则路由跳转到成功页面;

pageEncoding="UTF-8"%>

用户登录成功页面

登录成功!

您的用户名是

7.error.jsp

若登录验证失败,则路由跳转到失败页面。

pageEncoding="UTF-8"%>

用户登录失败页面

${error}

点击链接返回登录页面

跑起来,看看效果如何:

a10bd441f521

默认访问用户登录页面

a10bd441f521

验证成功后跳转到success

The End~

作者: 肖sir@ZHBIT

2018 年 09月 27日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值