近期刚刚入门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简单入门实例

    2019独角兽企业重金招聘Python工程师标准>>> 1.安装JDK7 以及Tomcat7.0,详细步骤见之前的一篇日志中的前两个步骤,以下是链接: http://my.oschi ...

  2. python进阶练习题:简单有趣#301:跳绳游戏【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶

    python进阶练习题:简单有趣#301:跳绳游戏[难度:2级]: 任务 有些孩子在玩跳绳游戏.儿童跳过绳子在大致相同的速度:每一次秒'.如果孩子跳时失败,他需要整理一下绳子,然后继续.这将需要3 s ...

  3. ajax 示例代码,Ajax的简单实用实例代码

    我将实现一个简单的Ajax页面无刷新进行用户验证案例: 效果如下图: 实现主要过程: 在UsersAction类中的checkUser方法中接收并验证前台的表单数据,针对不同情况,返回一个状态码cod ...

  4. php ajax简单实例代码,Ajax的简单实用实例代码

    这篇文章主要介绍了Ajax的简单实用实例代码,对ajax感兴趣的朋友可以参考下Ajax的简单实用的方法 我将实现一个简单的Ajax页面无刷新进行用户验证案例: 效果如下图: 实现主要过程: 在User ...

  5. SSH+ExtJs4开发项目的Demo实例视频讲解

    大家好.应大家的需求和一些迷茫的人不知道如何去ExtJs开发.所以我做了一套视频和源码共享一下.分享一下经验. 搭建了SSH的框架.因为我在网上找SSH的时候.都只有一个Demo的实例.本身真正的作用 ...

  6. 工作流(activiti7)-进阶使用(流程实例,个人任务,组任务)(三)

    工作流(activiti7)教程-简单的介绍和使用(一) 工作流(activiti7)教程-简单的介绍和使用(二) 工作流(activiti7)-进阶使用(流程实例,个人任务,组任务)(三) 工作流( ...

  7. eclipse ssh mysql数据库_Eclipse搭建SSH环境实现Struts2分页显示mysql数据库表中内容...

    摘要 因运行后404错误,遂选择集成好SSH框架的MyEclipse开发工具: 最终实现了Struts2框架的分页查看学员信息,Spring3和Hibernate3的尝试宣告失败. 1.本项目的环境 ...

  8. 深入实践Spring Boot1.3.2 一个简单的实例

    1.3.2 一个简单的实例 Spring Boot的官方文档中提供了一个最简单的Web实例程序,这个实例只使用了几行代码,如代码清单1-3所示.虽然简单,但实际上这已经可以算作是一个完整的Web项目了 ...

  9. [Dask使用实例]Dask简单计算实例(map, submit)

    Dask简单计算实例 from dask.distributed import Client if __name__ == '__main__':client = Client()a = client ...

最新文章

  1. Resources与StreamingAssets文件夹的区别
  2. View的setOnClickListener的添加方法
  3. Unity3D与JSP TomCatserver传递数据和文件( 二 ) Unity3D向java传输表单
  4. 文章内容分页功能实现
  5. fcm脑图像分割matlab,MATLAB程序:用FCM分割脑图像
  6. 爬虫 requests 模块
  7. 计算机网络中流的定义,计算机网络的基本概念-Read.PPT
  8. android搜索框布局文件,android搜索框列表布局,流程及主要步骤思维导图
  9. Scratch少儿编程案例~走迷宫游戏
  10. 计算机视觉SIFT算法详解
  11. 专访阿里云游戏首席架构师李刚:如何解决云服务技术两大痛点?
  12. 黑苹果 MacOS 10.15 Catalina 安装详细教程带工具资料
  13. 电脑突然间变卡的解决办法
  14. 一周肝出Linux之远程服务详解(ssh远程登录、scp远程复制、sftp安全下载、TCP Wrappers访问控制)
  15. 【bzoj1123】[POI2008]BLO
  16. oceanus-58总体框架理解
  17. 行人检测系统中的行人特征及检测方法
  18. java植物大战僵尸_植物大战僵尸java游戏
  19. C语言俄罗斯方块删除某一行,俄罗斯方块消除满格问题,消除一行后出了问题...
  20. 战地1进服务器显示无法部署,战地1无法加入服务器 发生了未知错误 | 手游网游页游攻略大全...

热门文章

  1. 如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于Matlab R2015b版 )
  2. (56)zabbix Screens视图配置
  3. 【PHP】文件写入和读取详解
  4. TensorFlow: couldn’t open CUDA library cupti64_80.dll、InternalError: Blas SGEMM launch failed
  5. 对lua协程的一点理解
  6. 面经——嵌入式软件工程师ARM体系与架构相关
  7. python列表遍历 空列表_Python list列表执行reversed()后执行pop()返回迭代对象遍历为空问题...
  8. ajax反序列化出错,将数据从jquery ajax请求传递给wcf服务失败了反序列化?
  9. android xml获取指定,android:如何从xml文件中获取信息?
  10. 设计模式之模版方法模式的钩子方法