Struts2 学习笔记 —— 01 —— HelloStruts

本文介绍了Struts2框架的基本配置方法,包括Tomcat和JRE的设置、struts.xml和web.xml文件的配置等内容。此外,还讲解了Struts2的运行机制,以及如何在开发过程中提高效率。

设置tomcat

Window —— Preferences —— MyEclipse —— Servers —— Tomcat —— Tomcat 6.x





设置JRE(JDK包含调试,JRE不包含调试)

Window —— Preferences —— Java —— Installed JREs


注意64位机器下选择Program Files下Java目录下的JDK,而不要选择Program Files(x64)下Java目录下的JDK


配置结束后,在试运行配置的tomcat时,出现了如下错误:

a configuration error occured during startup.please verify the preference field with the prompt: cannot connect to VM


解决方法是在tomcat 6.x左边点+号,设置tomcat 的JDK,设置完成后,问题解决




struts目录



一般使用apps目录下的示例程序



首先把struts2-blank —— WEB-INF —— classes下的配置文件struts.xml拷贝



将这个配置文件拷贝到src目录下就可以,因为编译后默认后就会发到WEB-INF目录下



还要拷贝相关类库,在struts2-blank —— WEB-INF —— lib目录下


实际上,现在的struts里面已经不包含这两个jar包了



将这些jar包拷贝到WEB-INF的lib目录下

拷贝完后是看不到的,因为这是PackageExplorer,想要能看到在硬盘上完整的样子,

需要在Navigator视图中(现在的MyEclipse版本貌似也可以看到了)

添加后,可以看到添加的类库(Referenced Libraries 或者 Web App Libraries)




对web.xml文件的配置

也是参考struts2-blank项目




自己重写struts.xml的配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <!--  不要删除,注释掉即可,可以仿写 -->
	<!-- 
		<constant name="struts.enable.DynamicMethodInvocation" value="false" />
		<constant name="struts.devMode" value="true" />
	
		<package name="default" namespace="/" extends="struts-default">
	
			<default-action-ref name="index" />
			<global-results>
				<result name="error">
					/error.jsp
				</result>
			</global-results>
			<global-exception-mappings>
				<exception-mapping exception="java.lang.Exception"
					result="error" />
			</global-exception-mappings>
			<action name="index">
				<result type="redirectAction">
					<param name="actionName">
						HelloWorld
					</param>
					<param name="namespace">/example</param>
				</result>
			</action>
		</package>
		<include file="example.xml" />
 	-->
	<!-- Add packages here -->

	<package name="default" namespace="/" extends="struts-default">

		<action name="hello">
			<result>
				/Hello.jsp
			</result>
		</action>
	</package>


</struts>


在WebRoot(或者WebContent)目录下建立Hello.jsp文件

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Hello struts2</title>
</head>
<body>
	Hello struts2! This is Hello struts2 page!
</body>
</html>

这样运行后,就显示出了Hello.jsp的内容


说明:

1、应当访问的路径是:/项目名/Action名称.action,对应struts.xml中action标签的名字

即应当访问的是:/Struts2_0100_Introduction/hello.action

但实际访问时,.action是可以忽略的


2、struts.xml中package标签中的namespace与路径一一对应

由于此时没有默认处理,所以目前访问/Struts2_0100_Introduction/的时候会出错

而action标签的name与子路径是对应的



3、配置常量devMode

由于tomcat需要重启才能使一些配置的变化生效(比如action的name)

但是每次更改配置就重启服务器是不好的

所以在struts.xml中的常量devMode配置

<constant name="struts.devMode" value="true" />

devMode改为true后表示为“开发模式”

有改动即可以有所反馈(不需要重新启动重新部署)


4、想在查看源码

直接查看jar中的.class文件是看不到源码的,因为是编译过的

比如想查看在web.xml中配置的StrutsPrepareAndExecuteFilter类



点击Attach Source

指定到/struts-2.1.6/src/core/src/main/java目录下



这样我们就能看到struts的源码了


还有javadoc location

在struts2-core-2.3.16.jar包上点右键,选择Propertities,选择Javadoc Location



指定到\struts-2.3.16\docs\struts2-core\apidocs文件夹下

(有些all的struts2下载包可能不包含,单独下载docs压缩包即可)

这样在用到的类名上点F1键就可以看到Javadocs了









5、在struts.xml中输入<应该默认没有提示,因为不知道提示什么(语法,关键字等等)


红框内是定义当前xml文档语法的位置

在Window —— Preference —— 搜索Catalog


添加一项,Key type选择为URI,Key设为指定文档位置的url(xml文档中指定的那个)

然后去struts目录下,lib目录下,找到struts2的core文件struts2-core-2.3.16.jar,并解压


找到解压中的struts-2.0.dtd文件,把文件位置放到Location即可


这样就有提示了





现在说明一下struts的运行机制

用户(客户端)输入访问路径http://localhost:8080/Struts2_0100_Introduction/hello

请求通过HTTP发送到tomcat,发现请求的是Struts2_0100_Introduction这个web application,并交给对应的项目去处理

然后去读取项目的web.xml

读取web.xml中配置了一个能够过滤所有的URL地址(/*)

所以这个请求会被对应的StrutsPrepareAndExecuteFilter所处理

首先看namespace,是与访问的路径一一对应的,会查到struts.xml

之前配置的是/的namespace,然后从中找到是否有一个name为hello的action

如果找到了的话,就去访问这个action中的内容,所以会直接跳到Hello.jsp的页面


示意图




为什么要用struts2?

设计模式的特点:简单的东西复杂化(这个地方哈哈哈……)

最大的好处:扩展性,灵活

可以把请求和结果(视图)分离,而不是直接写死

有更改的时候会更加灵活,直接在配置文件中修改即可


评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值