轻量级框架SSH应用与开发——Struts2之学习总结(初阶)

简介

Struts框架是流行广泛的一个MVC开源实现,而Struts2是Struts框架的新一代产品,是将Struts1和WebWork两种技术进行兼容、合并的全新MVC框架;结合了两者的优点,并且抛弃了原来Struts1的缺点,因此在稳定性、开发速度、性能等方面都有很好的体现。
Struts2的框架结构:


控制器
S truts2的控制器组件是Struts2整个框架的核心,实际上,所有MVC框架都是以控制器组件为核心的,Struts2的控制器由两部分组成:
核心控制器StrutsPrepareAndExecuteFilter和业务控制器Action。

1.StrutsPrepareAndExecuteFilter
核心控制器StrutsPrepareAndExecuteFilter实际上是一个Servlet过滤器,作用于整个Web应用程序,需要在web.xml中进行配置,其示例配置代码如下:
通常MVC框架只需要在Web应用中加载一个核心控制器即可,对于Struts2而言,就是加载其核心控制器StrutsPrepareAndExecuteFilter。一个应用只要加载了
StrutsPrepareAndExecuteFilter后,就具有了Struts2的基本功能。当配置好核心过滤器,web应用启动时就会加载该过滤器,并在运行过程中所有的请求都需经过
该过滤器过滤后才能进一步处理。
2.Action
Action用于处理用户的请求,因此也被称作业务控制器。每个Action类就是一个工作单元,Struts2框架负责将用户的请求与相应的Action匹配并进行处理,匹配规则需
要在Struts2的配置文件中声明。
Struts2框架实现Action类有以下三种方式:
(1)创建普通的POJO类,该类通常包含一个无参的execute()方法,返回值为字符串类型;
(2)实现Action接口;
(3)继承ActionSupport类。
三种方式大同小异,以下是使用第三种方式的示例代码:
package action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
	//序列号
	private static final long serialVersionUID = 1L;
	private String username;
	private String password;
	public String getName() {
		return username;
	}
	public void setName(String name) {
		this.username = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	public String execute() {
		if (username.equals("admin") && password.equals("123456")) {
			return "success";
		}
		return "error";
	}
}

配置文件
Struts2的配置文件有以下两种:
(1)struts.xml配置文件,用于配置Action相关信息;
(2)struts.properties属性文件,用于配置Struts2的全局属性。
1.struts.xml
在配置一个Action时,必须指定该Action的实现类,并定义该Action的处理结果与视图资源之间的映射关系。示例代码如下:
<?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">
		<action name="user" class="action.LoginAction">
			<result name="success">/index.jsp</result>
			<result name="error">/error.jsp</result>
		</action>
	</package>
</struts>
action的name自定义,action标识;class为前面所写对应的业务控制器,既action类;result的name与action类中相呼应,映射对应的视图资源。

2.struts.properties
struts.properties属性文件是Struts2应用的全局属性文件,该文件的内容是以“键/值”对的形式存储的,即“key = value”格式。示例代码如下:
#指定web应用的默认编辑码集
struts.i18n.encoding = UTF-8
#当struts.xml修改后是否重新加载该文件,在开发阶段最好打开
struts.configuration.xml.reload = true
#设置浏览器是否缓存静态内容,开发阶段最好打关闭
struts.serve.static.browserCache = false
ps:struts.properties 是可以不要的!!!因为 struts.xml文件中 有 <constant> 这个节点, 你可以把你想写在struts.properties的自定义配置写在struts.xml文件当中.
先加载 struts.xml,再加载 struts.properties,最后再加载web.xml。也就是说 struts.properties是可以覆盖 struts.xml里面的 配置的,具体是否要struts.properties,
还是得具体情况,具体分析。

<?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">
		<action name="user" class="action.LoginAction">
			<result name="success">/index.jsp</result>
			<result name="error">/error.jsp</result>
		</action>
	</package>
</struts>

extends,继承struts-default包,struts-default是Struts2框架的默认抽象包,是配置Action的基础,通常定义包时都应继承它。

struts2的Action都必须配置在package里,这里使用默认package--default struts.xml是从上往下解析处理的,因此被继承的package要放在继承package之前,且
任意两个包的名字不能相同,否则会抛出异常。如果在同一个包中配置了两个name相同的Action,则后一个Action会覆盖前一个Action。

namespace决定了action的访问路径,如果没有namespace属性字段的默认为"",是为默认命名空间,可以接收所有路径的action,会被最后才搜索
namespace也可以写为/,或者/xxx,或者/xxx/yyy。
当namespace为"/"时,其访问请求的URL如下:
http://ip:端口号/web应用路径名称/user.action
当namespace为"/xxx",如"/admin",其访问请求的URL如下:
http://ip:端口号/web应用路径名称/admin/user.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>
	<form action="user.action" method="post">
		<p>用户名:<input type="text" name="name"><br>
		<p>密码:<input type="password" name="password"><br>
		<input type="submit" value="登陆">
	</form>
</body>
</html>

在任意新建index.jsp与error.jsp即可




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值