2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Struts2项目实战 微云盘(四):登录注册

Struts2项目实战 微云盘(四):登录注册

时间:2024-07-17 22:15:59

相关推荐

Struts2项目实战 微云盘(四):登录注册

一、本节说明

进入github下载本项目(开源)

本节实现登录、注册的逻辑以及UI。

二、Struts相关配置

在使用Struts前必选先配置Struts。

Step1:引入Struts所需jar包

如果没有引入,请参考:Struts2项目实战 微云盘(二):项目结构

Step2:配置Struts的核心Filter

在WEB-INF新建web.xml文件修改为如下格式:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_1.xsd"version="3.1"><!-- 定义sruts2的核心Filter --><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></web-app>

Step3:Struts配置文件

在src路径下创建struts.xml文件,struts.xml负责配置控制器、拦截器、异常等一系列与Struts有关的东西,以下代码只创建了一个包,修改为如下格式:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!-- 允许动态方法调用 --><constant name="struts.enable.DynamicMethodInvocation" value="true"></constant><constant name="struts.ognl.allowStaticMethodAccess" value="true" /><constant name="struts.il8n.encoding" value="UTF-8" /><package name="lzf" namespace="/" extends="struts-default"><!--这里配置Action--><!--匹配所有请求Action--><action name="*"><result>/WEB-INF/content/{1}.jsp</result></action></package></struts>

三、注册功能

网页收集用户注册信息->提交给注册控制器->控制器调用业务逻辑组件实现用户注册->返回逻辑视图名->struts根据逻辑视图名与资源视图的映射关系转向对应的资源视图

Step1:实现控制器

RegisterAction类是注册的控制器,负责调用业务逻辑组件。它继承自ActionSupport,在RegisterAction中封装了User对象的属性用来接收请求传过来的参数,这几个属性以及setter、getter方法与User对象中属性相同,所以不再细说,对用户请求的处理要放在execute()方法中,该方法返回逻辑视图名。

该控制器的代码很简单,通过ServiceImpl对象调用用户注册方法,如果注册成功,返回SUCCESS,否则返回ERROR。

这里的SUCCESS和ERROR都是逻辑视图名

@Overridepublic String execute() throws Exception {ServiceImpl serviceImpl=new ServiceImpl();boolean result=serviceImpl.register(username, password, sex, age, phone);if(result) return SUCCESS;else return ERROR;}

Step2:配置Action

仅仅实现了Action还不够,还需要在struts.xml中配置该Action。

<!-- 注册Action --><action name="registerAction" class="cn.lzf.action.RegisterAction"><result name="error">/WEB-INF/content/register_err.jsp</result><result>/WEB-INF/content/register_succ.jsp</result></action>

Step3:注册界面

第2步中配置两种逻辑视图与资源视图的映射关系,所以我们需要先定义注册页面register.jsp,还要定义register_err.jsp、register_succ.jsp。

register_err.jsp、register_succ.jsp这两个页面比较简单

<!--注册失败页面 register_err.jsp--><body>注册失败!</body>

<!--注册成功页面 register_succ.jsp--><body>注册成功!<a href="login">去登录</a></body>

register.jsp页面也没什么可说的,就一个表单提交给registerAction:

<s:form action="registerAction" id="form1"><s:textfield label="用户名" name="username"></s:textfield><s:password label="密码" name="password"></s:password><s:radio list="{'男','女'}" name="sex"></s:radio><s:textfield label="年龄" name="age"></s:textfield><s:textfield label="电话" name="phone"></s:textfield><s:submit value="注册账号" id="submit"></s:submit></s:form>

div垂直居中解决方案:

div的水平居中很好解决:设置margin:0 auto ;就行了。要设置div垂直居中怎么做呢?

首先设置该div的祖先宽高都设为100%,然后将该div设为相对定位脱离文档流,设置top值50%,现在div会变成下面这个样子:

所以还需要设置div的margin-top的值为div高度的一半

四、登录实现

Step1:实现控制器

LoginAction是登录控制器,它会调用业务逻辑组件对用户信息验证,验证成功后将用户信息保存到session中。

@Overridepublic String execute() throws Exception {ServiceImpl serviceImpl=new ServiceImpl();//验证通过if (serviceImpl.validate(username, password)){//调用Servlet APIActionContext ctx=ActionContext.getContext();ctx.getSession().put("username", getUsername());ctx.getSession().put("password", getPassword());return SUCCESS;}else return ERROR;}

Step2:配置Action

<!-- 登录Action --><action name="loginAction" class="cn.lzf.action.LoginAction"><result name="error">/WEB-INF/content/err.jsp</result><result>/WEB-INF/content/index.jsp</result></action>

index.jsp是主页面视图,稍后会实现。到此,登录注册功能大致已经实现完了,但是还有不足:没有对用户输入进行校验。

五、为登录注册添加输入校验功能

在LoginAction控制器所在包下创建LoginAction-validation.xml文件,Struts会自动为LoginAction添加输入校验功能。这里为了示范,只对username字段进行了输入校验,登录的校验文件如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "/dtds/xwork-validator-1.0.3.dtd"><validators><field name="username"><field-validator type="requiredstring"><param name="trim">true</param><message>必须输入名字</message></field-validator><field-validator type="regex"><param name="expression"><![CDATA[(\w{4,10})]]></param><message>用户名只能是数字或字母,且长度在4-10之间</message></field-validator></field></validators>

添加了输入校验功能后如果数据没有通过校验页面会转向“input”逻辑视图所对应的资源视图,所以我们还应该为LoginAction、RegisterAction添加一个”input”的结果。

输入格式不正确会转向自身页面,struts标签库提供的表单会自动把message输出来

<!-- 登录Action --><action name="loginAction" class="cn.lzf.action.LoginAction"><result name="error">/WEB-INF/content/err.jsp</result><result>/WEB-INF/content/index.jsp</result><result name="input">/WEB-INF/content/login.jsp</result></action>

同理,也可为RegisterAction添加上输入校验功能。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。