使用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搭建登录注册示例的更多相关文章

  1. Nodejs学习总结 -Express 登录注册示例(二)

    项目创建后,我们来做个登录注册实例,详细操作步骤如下. 1.新建项目demo ,具体操作步骤参考上一章内容 https://www.cnblogs.com/Anlycp/ 2.添加mysql和sess ...

  2. Struts2+MySQL登录注册

    下载地址:http://download.csdn.net/detail/qq_33599520/9777172 项目结构图: 代码: package com.mstf.action; import ...

  3. IDEA基于Maven Struts2搭建配置及示例

    1.web.xml加载struts框架即过滤器,要注意struts版本不同过滤器配置也不同. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems ...

  4. vue新手入门之使用vue框架搭建用户登录注册案例,手动搭建webpack+Vue项目(附源码,图文详解,亲测有效)

    前言 本篇随笔主要写了手动搭建一个webpack+Vue项目,掌握相关loader的安装与使用,包括css-loader.style-loader.vue-loader.url-loader.sass ...

  5. JQuery+Ajax+Struts2+Hibernate 实现完整的登录注册

    写在最前: 下午有招聘会,不想去,总觉得没有准备好,而且都是一些不对口的公司,可是又静不下心来,就来写个博客. 最近在仿造一个书城的网站:http://www.yousuu.com ,UI直接拿来用, ...

  6. nodejs+express+mongodb实现登录注册

    nodejs+express+mongodb实现登录注册 1 简介 登录注册功能使用nodejs+express+mongodb完成,其中对mongodb的操作使用mongoose完成,对mongod ...

  7. javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  8. node.js实现简单的登录注册页面

    首先需要新建四个文件 一个服务器js 一个保存数据的txt 一个登陆.一个注册页面html 1.注册页面 <!DOCTYPE html> <html lang="en&qu ...

  9. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

随机推荐

  1. git和SVN交互(待完善)

    右键 git bash here 然后从SVN同步代码,git status命令,用来确认版本库状态 右键 --> TortoiseGit -->  show log 打开日志  查看gi ...

  2. Maven安装使用

    环境:Ubuntu 12.04LTS,jdk1.6 1.下载maven3.05: 2.解压并获取M2/bin/mvn地址: 3.创建~/.mavenrc文件,并加入JAVA_HOME并export(需 ...

  3. 【python】PIL 批量绘制图片矩形框工具

    工具采用PIL:Python Imaging Library,图像处理标准库.PIL功能非常强大,但API却非常简单易用. 安装PIL 在Debian/Ubuntu Linux下直接通过apt安装 $ ...

  4. imovie的快速入门

    iMovie 的边栏区域,可让您整理和选择资源库和事件. 在"资源库"列表中选择资源库或事件时,其媒体会显示在浏览器中. 浏览器 iMovie 中的区域,用于显示"资源库 ...

  5. Windows环境下npm install常见错误

    Windows环境下npm install安装包依赖时,常出现一些错误,下面为个人解决办法: 错误一 缺少python环境: G:\nodejs\moviesite\node_modules\bcry ...

  6. 另类vs2015+xamarin 的android界面乱码 解决

    text.Text += "验证key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置"; 代码就上面一行,单步走之前text.Text里面是汉 ...

  7. Android学习十一:高德地图使用

    写这篇文章主要有三个目的: 1.使用高德地图api定位 2.获取天气数据 3.编程练手 文件结构 清单文件信息说明: <?xml version="1.0" encoding ...

  8. openjudge-最好的草

    http://noi.openjudge.cn/ch0108/17/ 总时间限制:  10000ms 单个测试点时间限制:  1000ms 内存限制:  65536kB 描述 奶牛Bessie计划好好 ...

  9. java编译正常javac出错不是内部或外部命令

    javac不是内部或外部命令 安装jdk版本jdk-8u111-windows-x64(jdk1.8.0_111) 配置环境: JAVA_HOME D:\xiazai\Java\jdk1.8.0_11 ...

  10. ios 利用airprint实现无线打印(配合普通打印机)

    很多时候,我们不可能为了一个打印功能而去替换打印机,来支持无线打印. 找了很久,终于找到了一种解决方案,来适应大多数没有带wifi功能的打印机支持无线打印. 前提: 有wifi路由器:因为手机要打印, ...