Struts2 学习笔记 —— 01 —— HelloStruts

设置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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值