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>
本文来自博客园,作者:月色深潭,交流群:733423266,转载请注明原文链接:https://www.cnblogs.com/moonpool/p/5657367.html