近期刚刚入门struts2。这里做一个简单的struts2实例来跟大家一起学习一下。

本例实现最简单的登陆,仅包括两个页面:login.jsp 用来输入username与password;success.jsp 为登陆成功页面。error.jsp为登陆失败页面。


1、新建web项目“struts2”


2、引入jar包


下载struts2所需jar包 struts-2.3.24-all.zip

解压后将例如以下最主要的jar包导入到WebRoot/WEB-INF/lib下

3、在WebRoot下建立页面


login.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<form action="login">
username:<input type="text" name="username" /><br>
password:<input type="password" name="password" /><br>
<input type="submit" value="submit" /><br>
</form>
</body>
</html>

此处form标签的action属性值指向的是以下struts.xml中的action标签的name属性,表示提交的表单由action标签中的class指向的LoginAction类来处理。

success.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
恭喜您:${requestScope.username} 登陆成功<br/>
</body>
</html>

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
登陆失败
</body>
</html>

3、配置web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list> <!-- 此Filter目的是设置全部的请求都由Struts2来处理 -->
<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><!-- 全部请求都由Struts2来处理 -->
</filter-mapping>
</web-app>

此处用filter过滤器设置了不论什么client的请求都由struts2来处理(设置struts为请求分发器)

4、建立action


package com.danny.user.action;

public class LoginAction {
private String username;
private String password; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String execute() {
if("admin".equals(username) && "admin".equals(password))
{
return "success";
}else{
return "error";
}
}
}

这个LoginAction用于处理登陆页面发来的数据。既然要处理数据,首先要接收数据,那么它是怎样接收到前台的数据的呢?

页面提交之后,去struts.xml中寻找相应action,进而找到LoginAction。LoginAction依据表单中input的name属性来获取值。规则就是:input的name属性值要和LoginAction中相相应的get、set方法后面的值一样。与LoginAction的字段没有关系:比方input的name属性值为“username”,那么LoginAction重相应的字段的get方法名应为“getUsername()”。所以这个LoginAction全然能够改成这样:

package com.danny.user.action;

public class LoginAction {
private String name;
private String pwd; public String getUsername() {
return name;
} public void setUsername(String username) {
this.name = username;
} public String getPassword() {
return pwd;
} public void setPassword(String password) {
this.pwd = password;
} public String execute() {
if("admin".equals(name) && "admin".equals(pwd))
{
return "success";
}else{
return "error";
}
}
}

LoginAction中的execute方法是每一个action必需要实现的方法,用于处理数据并返回要显示的界面。

5、配置struts.xml


在src文件夹下建立struts.xml

<?

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="struts2" extends="struts-default">
<!-- extends是继承的意思,struts-default位于struts2-core-2.3.24.jar.struts-default.xml -->
<action name="login" class="com.danny.user.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>

struts.xml中,每一个action相应一个action。这个name为”login”的action就相应com.danny.user.action包下的LoginAction。result的name相应于action的execute的返回值,假设返回”success”则跳转到success.jsp;假设返回”error”则跳转到error.jsp。


至此。部署项目,訪问localhost:8080/struts2,进入登陆页面:

登陆成功时,跳转到成功页面:

用户名、密码错误时,跳转到登陆失败页面:

整个步骤例如以下

【SSH高速进阶】——struts2简单的实例的更多相关文章

  1. struts2——简单登陆实例

    从今天开始,一起跟 各位聊聊java的三大框架——SSH.先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在 运用MVC设计模型来开发Web应用 ...

  2. J2EE进阶(六)SSH框架工作流程项目整合实例讲解

    J2EE进阶(六)SSH框架工作流程项目整合实例讲解 请求流程 经过实际项目的进行,结合三大框架各自的运行机理可分析得出SSH整合框架的大致工作流程. 首先查看一下客户端的请求信息: 对于一个Web项 ...

  3. ssh远程登录命令简单实例

    ssh远程登录命令简单实例 ssh命令用于远程登录上Linux主机. 常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh -h查 ...

  4. 最新版ssh hibernate spring struts2环境搭建

    最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...

  5. SSH---整合Struts2&Spring&Hibernate(实例)

    一.SSH回顾 Struts2:核心为过滤器+拦截器.过程:Filter--->FilterDispatcher-->ActionMapper-->ActionProxy--> ...

  6. Struts2漏洞利用实例

    Struts2漏洞利用实例 如果存在struts2漏洞的站,administrator权限,但是无法加管理组,内网,shell访问500. 1.struts2 漏洞原理:struts2是一个框架,他在 ...

  7. Python进阶:函数式编程实例(附代码)

    Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...

  8. SSH整合框架+mysql简单的实现

    SSH整合框架+mysql简单的实现 1. 框架整合原理: struts2整合Spring 两种: 一种struts2自己创建Action,自动装配Service : 一种 将Action交给Spri ...

  9. TypeScript进阶开发——ThreeJs基础实例,从入坑到入门

    前言 我们前面使用的是自己编写的ts,以及自己手动引入的jquery,由于第三方库采用的是直接引入js,没有d.ts声明文件,开发起来很累,所以一般情况下我们使用npm引入第三方的库,本文记录使用np ...

随机推荐

  1. MountService整理

    刚毕业时第一个接触的模块就是Vold.这个模块尽管小,但深入下去是有一定难度的. 花了点时间又一次整理了下这一块的逻辑,也当温习下这个模块. watermark/2/text/aHR0cDovL2Js ...

  2. javascript进阶课程--第一章--函数

    javascript进阶课程--第一章--函数 学习要点 了解内存管理 掌握全局函数的使用 知识点 基本类型和引用类型 基本类型值有:undefined,NUll,Boolean,Number和Str ...

  3. CentOS7 启动[root@localhost ~]# systemctl start docker Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for de

    1).在linux虚拟机上安装docker步骤:1.检查内核版本,必须是3.10及以上uname ‐r2.安装dockeryum install docker3.输入y确认安装4.启动docker[r ...

  4. 关于HTML5和CSS3的几个“新增”

    html5和css3分别是目前最新的web前端编程的标准,加入了新的标准和要求. 1.HTML5新增input输入类型,即type后面的值 文本域 <input type="text& ...

  5. web.config添加identity impersonate="true"导致拒绝访问

    例:<identity impersonate="tr" userName="AD\name" password="word"/> ...

  6. python多线程理解

    在发送网络请求的过程中,单个请求的速度总是有着很大的限制,而任务往往需要以更快的速度去执行,这时多线程就是一个很好地选择.python已经给我们封装好了多线程库thread和threading. th ...

  7. 织梦DedeCMS会员登录或退出后如何直接跳转到首页

    织梦dedecms默认情况下的会员登录后会直接跳转到会员中心,退出也是一样,但是如果我们想让会员登录后直接跳转到首页,那该如何实现呢? 经过我们的研究,已经找到解决办法,下面是详细的修改步骤: 首先在 ...

  8. 数据库更新DATE类型的时间

    使用to_date() 进行格式转换 to_date('2018/11/16','yyyy/MM/dd') update tableName t set t.shipment_date = to_da ...

  9. 转:IOS的推送。是一个强大的功能

    IOS下我们很多人天天开着 邮件推送 微信推送 QQ推送 微博推送 新浪微博推送,安卓敢吗? 五个后台进程消耗电.流量谁敢这么做?现在安卓也出了推送,但绝对是伪推送.实际是挂了个进程,关掉了就收不到. ...

  10. HTTP基础知识整理

    http请求由三部分组成,分别是:请求行.消息报头.请求正文 HTTP(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接 ...