Struts2学习——0200struts.xml初步解释
来源:互联网 发布:用友通软件 编辑:程序博客网 时间:2024/05/22 11:54
背景
昨天,第一次接触Struts2,就依葫芦画瓢,根据Struts2提供的example,写出了一个最简单的HelloStruts Demo。但是对于其实比较重要的struts.xml文件内容,其实却是一问三不知。今天将这个文件中的内容,做一个简单的总结和解释。为后面的学习先夯实一下基础。
NameSpace命名空间
1. 分析
根据以下struts.xml文件进行分析
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- 首先说说这个package,和java中的包其实是一个作用,为了分别同名类,这里是为了分别同名action --> <package name="front" namespace="/front" extends="struts-default"> <!-- 可以看到这个xml文件有两个package,都有同名action,本package有一个namespace属性"/front" --> <!-- 这代表,如果再url的位置打localhost:8080/Struts2_0200_NameSpace/front/hello_struts --> <!-- 便是这个action起作用,跳转到index.jsp --> <action name="hello_struts"> <result>/index.jsp</result> </action> </package> <!-- 这个package没有namespace属性,即使用默认值"" --> <!-- 表示只要是以/hello_struts结尾,只要找不到精确namespace的都跳转到这个result --> <!-- 例如:localhost:8080/Struts2_0200_NameSpace/fsdafd/hello_struts --> <package name="back" extends="struts-default"> <action name="hello_struts"> <result>/error.jsp</result> </action> </package></struts>
【附】
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>Hello Struts2</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> Hello Struts2 <br> </body></html>
error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>Error page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> Your url is not found <br> </body></html>
2. 结果
URL:localhost:8080/Struts2_0200_NameSpace/front/hello_struts时显示页面
URL:localhost:8080/Struts2_0200_NameSpace/(乱打内容)/hello_struts时显示页面
Action
大致解释一下Action里面的class是干嘛的,Action接口,等一系列的东西。前面我们用到的struts.xml文件,其实都是最简易的形式,现在把这个形式丰富一下。知道一下里面到底有什么东西。
1. 分析
直接上代码,我们代码里看各个部分都是什么意思
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <!-- 以下这句表示打开develop mode开发者模式,这样在struts.xml上的修改后台会实时刷新 --> <constant name="struts.devMode" value="true" /> <!-- namespace为/等于上面提到的默认格式 --> <package name="front" extends="struts-default" namespace="/"> <!-- action多了一个class属性,表示,这个action的操作,是由这个class决定的。 --> <!-- 与struts1不同,每一个action都会自动new一个class相对应的对象,如果没有指定就用默认Action --> <!-- 可以看到这里的Action是由IndexAction1决定的 --> <action name="index" class="com.bjsxt.struts2.front.action.IndexAction1"> <!-- 根据Action中,execute方法返回的值,决定对应某个result,跳转到哪个页面 --> <result name="success">/ActionIntroduction.jsp</result> <result name="error">/error.jsp</result> </action> </package></struts>
IndexAction1.class
package com.bjsxt.struts2.front.action;public class IndexAction1 { public String execute() { //这里如果返回success,则调用ActionIntroduction.jsp return "error"; }}
ActionIntroduction.jsp
<?xml version="1.0" encoding="GB18030" ?><%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@taglib uri="/struts-tags" prefix="s" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030" /><title>Insert title here</title></head><body>具体视图的返回可以由用户自己定义的Action来决定<br />具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容<br />具体Action的实现可以是一个普通的java类,里面有public String execute方法即可<br />或者实现Action接口<br />不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法<br /></body></html>
error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'error' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> ERROR! <br> </body></html>
2. 结果
如果Action返回success
如果Action返回error
3. 基本框图
若有不足之处,请不吝赐教
0 0
- Struts2学习——0200struts.xml初步解释
- struts2——struts.xml
- struts2配置文件—struts.xml
- struts2 struts-default.xml 学习
- Struts2的配置文件——struts.xml
- Struts2配置文件详解——struts.xml
- Struts2——struts.xml常用配置
- struts2—核心配置struts.xml
- 【struts2】一个BBS论坛初步显示struts.xml的配置
- struts2 的struts.xml 配置解释
- Struts2 学习笔记——struts.xml文件之Bean的配置
- Struts2 学习笔记——struts.xml文件之拦截器的配置
- Struts2学习笔记——struts.xml配置文件中通配符详解
- 【转载】Struts2学习总结----struts.xml 配置
- struts2学习(二)struts.xml配置
- Struts2学习笔记四:struts.xml
- Struts2学习2——Struts配置
- struts.xml解释
- Java如何实现文件拷贝操作和如何正确关闭资源
- 计数排序
- Struts2笔记(持续更新)
- [Memcached系列]专题一:快速入门
- js学习笔记(四)表单验证
- Struts2学习——0200struts.xml初步解释
- 不同IO流对文本文件拷贝速度大小的比较
- redis持久化
- deepin/ubuntu 双系统安装Drcom时可能出现的问题
- vc++调试注入的DLL
- 事务的一阶段提交协议和二阶段提交协议
- thinkphp3.2.3加载公共函数
- I2C时序剖析
- Git笔记(持续更新)