Struts2 基础典型应用

例子

下面就是运用Struts2 实现的例子的运行效果

输入正确名字

不输入直接点击提交按钮

在首页面中输入名称,点击提交按钮,显示欢迎界面。

如果没有名称,点击提交按钮,就显示错误界面。

=============================================================================================

原理:

1.当用户输入或不输入名字,并点击提交按钮后,相当于浏览器提交了一个请求(http://localhost:8080/Struts2Test/greeting.action)给web容器

2.Web容器调用Struts2过滤器的doFilter()方法(在web.xml中注册了一个Struts2提供的过滤器,所以才调用Struts2过滤器)

3.在第一步中可以看到,请求中调用的action的名称是greeting,那么Struts2就会在struts.xml中与greeting相匹配的action(如<action name="greeting" class="com.hch.action.GreetingAction">)

4.找到后将请求中的表单数据注入到这个action对象中,注入的方法是通过该对象的setXXX()方法,注入后再调用该对象的execute()方法来执行,并返回结果到struts2中,假设这里返回的结果是success。

5. Struts2 根据action对象返回的success结果,在struts.xml中找到<result name="success">success.jsp</result>信息,并将success.jsp返回给浏览器来展示,这样一次交互就结束了。

==============================================================================================

实现过程

1.创建一个Java Web项目。

2. 下载依赖类库,并解压,将其中的库文件添加到WEB-INF目录的lib文件夹中。

最新的版本的下载链接

http://struts.apache.org/download.cgi#struts251  或者访问  http://pan.baidu.com/s/1nvvoLEp

本例子使用的全部依赖库下载地址:http://pan.baidu.com/s/1gfa2q5d

3.在WEB-INF目录下创建一个web.xml文件,并在其中注册一个Struts2提供的过滤器,文件内容如下

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 5     id="WebApp_ID" version="2.5">
 6     <display-name>8.2</display-name>
 7     <welcome-file-list>
 8         <welcome-file>index.html</welcome-file>
 9         <welcome-file>index.htm</welcome-file>
10         <welcome-file>index.jsp</welcome-file>
11         <welcome-file>default.html</welcome-file>
12         <welcome-file>default.htm</welcome-file>
13         <welcome-file>default.jsp</welcome-file>
14     </welcome-file-list><!-- Struts2过滤器 -->
15     <filter>
16         <!-- 过滤器名称 -->
17         <filter-name>struts2</filter-name>
18         <!-- 过滤器类 -->
19         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
20     </filter>
21     <!-- Struts2过滤器映射 -->
22     <filter-mapping>
23         <!-- 过滤器名称 -->
24         <filter-name>struts2</filter-name>
25         <!-- 过滤器映射 -->
26         <url-pattern>/*</url-pattern>
27     </filter-mapping>
28 </web-app>

4. 创建一个Action对象,其名称是GreetingAction。

位置如下

代码如下:

 1 package com.hch.action;
 2 import com.opensymphony.xwork2.ActionSupport;
 3 
 4 public class GreetingAction extends ActionSupport {
 5     private static final long serialVersionUID = 1L;
 6     // 用户名
 7     private String username;
 8     // 处理请求
 9     @Override
10     public String execute() throws Exception{
11         // 判断用户名是否有效
12     if(username == null || "".equals(username)){
13             // 返回到错误页面
14             return ERROR;
15         }else{
16             // 返回到成功页面
17             return SUCCESS;
18         }
19     }
20     // username属性的getter方法
21     public String getUsername() {
22         return username;
23     }
24     // username属性的setter方法
25     public void setUsername(String username) {
26         this.username = username;
27     }
28 }

 5. 创建struts.xml文件

位置如下

内容如下:

 1 <!DOCTYPE struts PUBLIC
 2     "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
 3     "http://struts.apache.org/dtds/struts-2.1.dtd">
 4 <struts>
 5     <!-- 声明包 -->
 6     <package name="myPackage" extends="struts-default">
 7         <!-- 定义action -->
 8         <action name="greeting" class="com.hch.action.GreetingAction">
 9             <!-- 定义成功的映射页面 -->
10             <result name="success">success.jsp</result>
11             <!-- 定义失败的映射页面 -->
12             <result name="error">error.jsp</result>
13         </action>
14     </package>
15 </struts>

6. 创建 首页面index.jsp 处理成功页面success.jsp 处理失败页面error.jsp

位置如下:

内容如下:

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>主页</title>
<style type="text/css">
    *{font-size: 12px;}
</style>
</head>
<body>
  <form action="greeting.action" method="post">
      请输入你的姓名:<input type="text" name="username">
      <input type="submit" value="提交">
  </form>
</body>
</html>

success.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>欢迎</title>
 9 <style type="text/css">
10     *{font-size: 12px;}
11 </style>
12 </head>
13 <body>
14     <font color="red">
15         <s:property value="username" />
16     </font>
17      ,您好!
18     <br>
19     欢迎使用来到本站。
20 </body>
21 </html>

error.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>错误</title>
 8 </head>
 9 <body>
10     <font color="red"> 错误:您没有输入姓名!</font>
11 </body>
12 </html>
原文地址:https://www.cnblogs.com/moonpool/p/5657367.html