Struts2项目实战 微云盘(四):登录注册
来源:互联网 发布:gta5ol女神捏脸数据 编辑:程序博客网 时间:2024/04/20 05:33
一、本节说明
进入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="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/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" "http://struts.apache.org/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中。
@Override public String execute() throws Exception { ServiceImpl serviceImpl=new ServiceImpl(); //验证通过 if (serviceImpl.validate(username, password)){ //调用Servlet API ActionContext 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" "http://struts.apache.org/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添加上输入校验功能。
- Struts2项目实战 微云盘(四):登录注册
- RN实战项目登录界面(四)
- 项目实战:Android中登录&注册二三事
- SSM综合项目实战(TTSC) -- day08 单点登录,注册登录,jsonp
- django实战--天天生鲜项目开发(用户注册-登录-用户中心)
- 讲项目实战:网站会员功能开发+登录/注册表单
- struts2 注册与登录
- Struts2系列登录注册的小项目之验证规则
- Struts2项目实战 微云盘(一):项目分析
- Struts2项目实战 微云盘(二):项目结构
- XMPPFramework iOS开发(四)注册登录
- struts2学习笔记之四(注册登陆小项目)
- RxSwift 实战操作【注册登录】
- 项目 功能: > 注册 > 登录
- Struts2项目实战 微云盘(三):DAO实现
- Struts2项目实战 微云盘(五):核心功能实现
- Struts2项目实战 微云盘(六)主界面UI
- Struts2项目实战 微云盘(七):文件上传下载
- php四种基础算法:冒泡,选择,插入和快速排序法
- Spring-属性文件自身的引用03
- 合并k个有序链表
- 笔试题 合并两个有序链表
- 【java baisc】final 关键字和enum类
- Struts2项目实战 微云盘(四):登录注册
- Java方法的可变参数类型
- 步进电机在运行过程中出现“只响不转”的情况该怎样处理
- 找工作可靠点的招聘网站
- HDU6073Phone Call
- hdu5534
- WeakHashMap
- [HDU]1402 A * B Problem Plus [FFT]
- Hadoop NameNode 高可用 (High Availability) 实现解析