使用Struts2搭建登录注册示例
Posted 旅鸟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Struts2搭建登录注册示例相关的知识,希望对你有一定的参考价值。
使用Struts2来搭建mvc网站框架还是比较容易的,Struts2提供了各项辅助功能,保证了web开发的快速方便。下面使用struts2来搭建一个登录注册示例。
0 项目结构截图
1 搭建Struts2环境
1.1 导入struts2基本包
因为这是一个简单的示例,所以仅用到了struts最进本的功能,所以只需导入struts的基本包即可,具体包如下:
其中文件名中的版本号因不同版本而异。将上面这些包放入WEB-INF/lib目录下,然后在将包导入项目中。
1.2 在web.xml中配置Struts2的过滤器
struts2使用servlet的过滤器来引入struts2框架,该过滤器类名称为:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,具体模板如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>LoginDemo</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
1.3 在src目录下创建struts.xml文件,该文件是struts2的默认配置文件,该项目仅用在struts.xml中配置action即可,具体模板如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <action name="login" class="com.login.demo.action.LoginAndRegisterAction" method="login"> <result name="success">/index.jsp</result> <result name="login">/login.jsp</result> </action> <action name="register" class="com.login.demo.action.LoginAndRegisterAction" method="register"> <result name="success">/index.jsp</result> <result name="register">/register.jsp</result> </action> </package> </struts>
通过以上步骤就将struts2框架引入了项目中,下面添加对应的代码实现。
2 添加业务实现
2.1 添加User实体类
User.java
package com.login.demo.model; public class User { private String name; private String pass; private String gender; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
2.2 添加LoginAndRegisterAction
因为登录和注册有很大的相似性,所以将这两个动作合并为一个,在struts.xml中配置action时可以分解为login和register动作,然后分别为其制定method属性,这样struts2调用时就会调用method制定的方法来代替默认的execute方法,代码如下:
LoginAndRegisterAction.java
package com.login.demo.action; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.login.demo.model.User; public class LoginAndRegisterAction implements Action { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String login() { if(getUser() != null) { if(getUser().getName() != null && getUser().getName().trim().length() > 0 && getUser().getPass() != null && getUser().getPass().trim().length() > 0) { ActionContext.getContext().getSession().put("type", "login"); return SUCCESS; } } return LOGIN; } public String register() { if(getUser() != null) { if(getUser().getName() != null && getUser().getName().trim().length() > 0 && getUser().getPass() != null && getUser().getPass().trim().length() > 0 && getUser().getGender() != null && (getUser().getGender().equals("male") || getUser().getGender().equals("female")) && getUser().getAge() > 0) { ActionContext.getContext().getSession().put("type", "register"); return SUCCESS; } } return LOGIN; } @Override public String execute() throws Exception { return null; } }
2.3 添加login.jsp
<%@ page contentType="text/html; charset=utf-8"%> <!DOCTYPE> <html> <head> <title>Login Demo</title> </head> <body> <form action="login" method="get"> NAME: <input type="text" name="user.name"><br> PASS: <input type="password" name="user.pass"><br> <button type="submit">Login</button> <a href="register.jsp">Register</a> </form> </body> </html>
2.4 添加register.jsp
<%@ page contentType="text/html; charset=utf-8"%> <!DOCTYPE> <html> <head> <title>Login Demo</title> </head> <body> <form action="register" method="get"> NAME: <input type="text" name="user.name"><br> PASS: <input type="password" name="user.pass"><br> AGE: <input type="text" name="user.age"><br> GENDER: <select name="user.gender"> <option value="male">male</option> <option value="female">female</option> </select> <button type="submit">Login</button> </form> </body> </html>
2.5 添加index.jsp
<%@ page contentType="text/html; charset=utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE> <html> <head> <title>Login Demo</title> </head> <body> <s:if test=\'#session.type=="login"\'> Name: <s:property value="user.name"/><br> Pass: <s:property value="user.pass"/><br> </s:if> <s:elseif test=\'#session.type=="register"\'> Name: <s:property value="user.name"/><br> Pass: <s:property value="user.pass"/><br> Age: <s:property value="user.age"/><br> Gender: <s:property value="user.gender"/><br> </s:elseif> <s:else> <% response.sendRedirect("login.jsp"); %> </s:else> </body> </html>
通过以上过程就完成了本示例。
以上是关于使用Struts2搭建登录注册示例的主要内容,如果未能解决你的问题,请参考以下文章