Struts2开发第一步
来源:互联网 发布:六人定律知乎 编辑:程序博客网 时间:2024/06/08 07:29
使用Struts2进行开发,首先需要导入Struts2所需的jar包,开发所需基本jar包:
编写web.xml文件,添加Struts2核心过滤器:
<filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>编写后台代码:
public class HelloWorldAction {public String execute() {System.out.println("HelloWorld");return "index";}}编写struts.xml文件:
在src目录下建立struts.xml文件
<struts><package name="helloworld" namespace="/" extends="struts-default"><action name="helloWorldAction" class="cn.itcast.HelloWorld.HelloWorldAction"><result name="index">index.jsp</result></action></package></struts>编写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>Insert title here</title></head><body>欢迎页面!</body></html>输出:
在浏览器访问http:localhost:8080/struts2_01/helloWorldAction.action,页面跳转至index.jsp页面,Eclipse控制台输出Hello World,证明Struts2环境配置正确。
总结:
1.在web.xml文件中只有一个过滤器,不再需要繁琐的配置;
2.action是一个简单的javabean,与servlet容器没有依赖关系,便于单元测试;
3.多了一个struts.xml文件,该文件配置了url和需要跳转的jsp文件。
注意:
struts.xml文件必须在classpath的根目录下。
补充:
struts.xml为什么一定要在classpath根目录下?
我们在web.xml文件中配置了StrutsPrepareAndExecuteFilter过滤器,查看StrutsPrepareAndExecuteFilter中的init方法:
public void init(FilterConfig filterConfig) throws ServletException { InitOperations init = new InitOperations(); try { FilterHostConfig config = new FilterHostConfig(filterConfig); init.initLogging(config); Dispatcher dispatcher = init.initDispatcher(config); init.initStaticContentLoader(config, dispatcher); prepare = new PrepareOperations(filterConfig.getServletContext(), dispatcher); execute = new ExecuteOperations(filterConfig.getServletContext(), dispatcher);this.excludedPatterns = init.buildExcludedPatternsList(dispatcher); postInit(dispatcher, filterConfig); } finally { init.cleanup(); } }
可以看到在
init.initDispatcher(config)中加载了相关配置文件,查看initDIspatcher(config)方法可以看出struts2通过dispatcher.init()方法初始化信息。
public Dispatcher initDispatcher( HostConfig filterConfig ) { Dispatcher dispatcher = createDispatcher(filterConfig); dispatcher.init(); return dispatcher; }查看dispatcher的init()方法可以看出init_TraditionalXmlConfigurations()加载了XML配置文件
public void init() { if (configurationManager == null) { configurationManager = createConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME); } try { init_DefaultProperties(); // [1] init_TraditionalXmlConfigurations(); // [2] init_LegacyStrutsProperties(); // [3] init_CustomConfigurationProviders(); // [5] init_FilterInitParameters() ; // [6] init_AliasStandardObjects() ; // [7] Container container = init_PreloadConfiguration(); container.inject(this); init_CheckConfigurationReloading(container); init_CheckWebLogicWorkaround(container); if (!dispatcherListeners.isEmpty()) { for (DispatcherListener l : dispatcherListeners) { l.dispatcherInitialized(this); } } } catch (Exception ex) { if (LOG.isErrorEnabled()) LOG.error("Dispatcher initialization failed", ex); throw new StrutsException(ex); } }最后我们查看init_TraditionalXmlConfigurations()方法,
private void init_TraditionalXmlConfigurations() { String configPaths = initParams.get("config"); if (configPaths == null) { configPaths = DEFAULT_CONFIGURATION_PATHS; } String[] files = configPaths.split("\\s*[,]\\s*"); for (String file : files) { if (file.endsWith(".xml")) { if ("xwork.xml".equals(file)) { configurationManager.addContainerProvider(createXmlConfigurationProvider(file, false)); } else { configurationManager.addContainerProvider(createStrutsXmlConfigurationProvider(file, false, servletContext)); } } else { throw new IllegalArgumentException("Invalid configuration file name"); } } }我们看到其中有一个变量configPaths = DEFAULT_CONFIGURATION_PATHS,该常量的值如下,可以看出变量并不再任何包下,应该在classpath根目录下:
private static final String DEFAULT_CONFIGURATION_PATHS = "struts-default.xml,struts-plugin.xml,struts.xml";
0 0
- Struts2开发第一步
- 研究Struts2源码第一步
- 手机开发第一步
- 软件开发第一步:系统分析
- Android开发第一步:HelloWorld
- IOS越狱开发第一步
- 走进Java开发第一步
- android开发第一步 - 分包
- Vive开发第一步
- 百度地图开发第一步
- eclipse使用Struts2第一步:创建工程
- SSH框架搭建 第一步 Struts2环境搭建
- JBuilder 开发J2ME程序第一步
- ADO开发第一步-登录数据库
- Red5开发第一步-Hello World
- 搭建ogre开发环境第一步
- 2011, 迈开iphone开发第一步
- 黑莓开发第一步(中文+HelloWord)
- SOES(EtherCAT中的sercos over EtherCAT)v1.0.0——tutorial.txt File Reference
- 易用的深度学习框架Keras简介及使用
- 22-LTE Policy and Charging Control (PCC)
- Python 中的 classmethod 和 staticmethod 有什么具体用途?
- 虚拟化之QEMU与KVM
- Struts2开发第一步
- 单引号与双引号的区别
- Android中WebView载入本地HTML代码并实现交互
- 使用Fragment的原有
- 大量滚动数据求平均
- MySQL学习2_CentOS下安装MySQL遇到问题:Access denied for user 'root'@'localhost'
- Android与PHP服务器数据连接源码
- 23-LTE Charging I_Offline
- leetcode 18