Struts2——第一个helloworld页面
struts2是一个较为成熟的mvc框架,先看看怎么配置struts2并且产生helloworld页面。
首先从官网下载struts2,http://struts.apache.org/download.cgi,用2.5就可以,本文也是基于2.5说明的,其他版本配置的时候会略有不同。环境tomcat8+jdk1.8+eclipse。下载之后,解压,把其中的8个包(本次开发只用这些即可,其他版本会有不同),commons-fileupload-1.3.3.jar、commons-io-2.5.jar、commons-lang3-3.6.jar、freemarker-2.3.26.jar、 log4j-api-2.9.1.jar、ognl-3.1.15.jar、struts2-core-2.5.14.1.jar、javassist-3.20.0-GA.jar。另外这里少了一个包,按理说官网给的不会少,但是在这8个包下面开发,tomcat始终会报错,于是加一个包,log4j-core.jar。
新建一个动态网页项目,然后把这些包刚在WEB-INF下的lib里面。
在web.xml中,配置拦截器,就是会过滤你的网页,因为只有你的网页经过了这个属于struts2的filter,你的操作才能被struts2看见,才能被struts2处理,所以这个filter要干三件事,1指出是谁要filter网页,2这个人的源地址或者说这个人的class是什么,3这个人要filter的网页是哪些。所以配置文件很明了了。
<?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>MyStruts2</display-name> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!-- 配置核心拦截器 -->
<filter>
<!-- Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- Filter的实现类 struts2.5以前可能有所不同 -->
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<!-- 拦截所有的url -->
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<filter>标签说明了谁要拦截网页,这个人是struts2,并且他的class的地址,<filter-mapping>说明了struts2这个人要拦截的网页是哪些,是全部。这两个标签通过filter-name联系起来,共同说明了filter的三个特征。
完成web.xml配置,需要的网页已经被拦截,那么拦截之后要让struts2来处理,这是就需要一个struts2.xml来处理这个拦截过来的网页了。在src目录下建立一个struts2.xml。
这个xml要对拦截到的网页进行处理,你访问的是a网页,那就让struts里面对应a的网页的来处理,如果访问的是b,那就让struts里面对应b的网页的来处理。由于我们做最简单的helloworld,我们就用helloworld来做访问,因此我们要在struts.xml放一个东西来接收并出来拦截到的helloworld页面。这个东西也要具备3个条件,1接收,用对应的名字即可接收,2处理,我们用什么东西来处理这个页面,3返回,处理完这个拦截的页面之后,我们要返回让访问者看到。1用对应的名字,2用一个类,3用一个页面。于是就有了下面这个struts2配置。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<!-- name action的名字,访问时使用helloworld.action访问,class:实现类 -->
<action name="helloworld" class="MyPackage.HelloWorldAction">
<!-- 结果集,即action中SUCCESS返回的视图 -->
<result name="success">
/result.jsp
</result>
</action> </package>
</struts>
第二行的文字很重要,没有的话是无法使用struts2的。<struts>标签里面一个<package>,再往里面,<action>就是我们要的,这个action的name是helloworld,表明我们用这个action来出来名为helloworld的网页,用class中的类来处理,处理之后可能会有不同的返回值,根据不同的返回值,用<result>中对应name的页面来返回给访问者。
这个action中的类:
package MyPackage;
import com.opensymphony.xwork2.ActionSupport; public class HelloWorldAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L; public String execute()throws Exception {
System.out.println("正在执行的Action");
return SUCCESS;
}
}
这个action中返回的页面:
<%@ 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>Insert title here</title>
</head>
<body>
struts2配置成功!
</body>
</html>
访问http://localhost:8080/MyStruts2/helloworld。
整个项目的结构:
这样一个最基本的struts2的网页就实现了。
主要还是要理解web.xml中的filter和struts.xml中的action。
Struts2——第一个helloworld页面的更多相关文章
- Django官方文档学习1——第一个helloworld页面
Django 1.10官方文档:https://docs.djangoproject.com/en/1.10/intro/tutorial01/ 1.查看django版本 python -m djan ...
- 第一个Struts2程序之HelloWorld
1.Struts2 简介 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与St ...
- SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
- Struts2框架学习第二章——Struts2下的HelloWorld
本章要点 — Struts 2的下载和安装 — 纯手工创建一个Web应用 — 纯手工创建一个Struts 2应用 — 实现Struts 2的Action — 配置Struts 2的Action — ...
- 12小时包你学会基于ReactMix框架的ReactNativeApp开发(二)基于Css+HTML写第一个app页面
上一篇文章,大家对于ReactMix(https://github.com/xueduany/react-mix)框架有了一个基本认识,知道我们是一个语法糖,帮助大家基于一套代码,所有平台都能跑.那么 ...
- 第二章——建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别-----答题者:徐潇瑞
1.首先下载安装git,很简单所以就不详细说了,当弹出一个类似的命令窗口的东西,就说明Git安装成功 2.因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识 3.接着,注册githu ...
- java web: eclipse & maven & jetty & struts2 & mysql = 简单登录页面
第一次接触java web开发,花费了一天半的时间,写了个简单的登录页面,以此文为记. 开发工具 Eclipse Luna Release (4.4.0) 已集成maven,maven目前的体会就是管 ...
- [maven学习笔记]第一节,认识maven,搭建maven开发环境,写第一个HelloWorld
本文地址:http://blog.csdn.net/sushengmiyan/article/details/40142771 maven官网:http://maven.apache.org/ 学习视 ...
- Cordova入门系列(二)分析第一个helloworld项目 转发 https://www.cnblogs.com/lishuxue/p/6015420.html
Cordova入门系列(二)分析第一个helloworld项目 版权声明:本文为博主原创文章,转载请注明出处 上一章我们介绍了如何创建一个cordova android项目,这章我们介绍一下创建的 ...
随机推荐
- org.hibernate.MappingException:Unknown entity:java.util.ArrayList
1.错误描述 [CQ] ERROR [http-apr-8888-exec-3] com.opensymphony.xwork2.util.logging.commons.CommonsLogger. ...
- web开发性能优化---数据库篇
1. 查询出的数据量过大(可以采用多次查询,其他的方法降低数据量),尽量采取分页查询数据 2.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 3.返回了不必要的行和列 用OR的字句可以分解成 ...
- hdu5730 Shell Necklace
重温了这道cdq+FFT 讲白了就是不断对 dp[l~mid] 和 sh[1~r] 进行fft 得到 dp[mid+1~r] #include<bits/stdc++.h> using n ...
- 【原】从零开始改造淘淘商城(引入dubbo解决项目耦合)02
前言: 关于为什么要引入dubbo框架,而不是用spring cloud或者是motan呢,主要是笔者现在公司用的就是dubbo,并且第一次接触到微服务的概念是来源于dubbo,再加上最近dubbo频 ...
- CSS3动画以及animation事件
1.CSS3动画以及animation事件的定义 animation :name duration timing-function delay iteration-count direction an ...
- python利用jieba进行中文分词去停用词
中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词. 分词模块jieba,它是python比较好用的分词模块.待分词的字符串可以是 unicod ...
- 【BZOJ3932】任务查询系统(主席树)
[BZOJ3923]任务查询系统(主席树) 题面 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei ...
- JavaScript之BOM
一.什么是BOM? BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”. 二.Windows对象 Window对象是客户端Ja ...
- 踩坑系列の Oracle dbms_job简单使用
二话不说先上代码 --创建存储过程 create or replace procedure job_truncateState is begin --此处就是要定时执行的sql execute imm ...
- 多线程(三) java中线程的简单使用
java中,启动线程通常是通过Thread或其子类通过调用start()方法启动. 常见使用线程有两种:实现Runnable接口和继承Thread.而继承Thread亦或使用TimerTask其底层依 ...