Struts2基础知识梳理(一)

        在阅读了几天的struts源码之后,发现许多源代码还看不太懂,于是回过头重新梳理一下struts2的基本知识及使用方法,只有基础打好了,才能更深入地学习!

        下面从在Eclipse搭建最基本的Struts2开发环境讲起,以一个简单的JavaWeb项目讲解struts2最基本知识!


           1、新建一个JavaWeb项目,导入struts的使用的最基本的jar包,如下图所示

          

            struts包含大量的jar包,以上只导入最基本的jar包,若进行更复杂的项目开发,则应该导入struts支持的jar包


           2、在web.xml文件配置核心控制器StrutsPrepareAndExecuteFilter,该控制器用于拦截所有请求,并分发请求到用户自定义的业务控制器Action,代码如下

          

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0" metadata-complete="false">

	<display-name>Struts Blank</display-name>

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

</web-app>

              这是一个最简单的struts配置,从上面代码中,我们可以看出struts2的核心控制器,是Servlet规范中的Filter过滤器,其配置与Filter一样,在这个例子中,我们设置<url-pattern>为*,表示该控制可以拦截用户的所有HTTP请求。

           

           3、核心控制器在拦截用户HTTP请求后,将请求分发给用户自定义的业务控制器(Action)进行业务处理,自定义一个Action类非常简单,在创建自定义的Action时,只需要继承struts框架提供的ActionSupport类即可,ActionSupport类是struts框架关于Action业务控制器的规范,该类又继承Action类。

          

public class LoginAction extends ActionSupport{
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return SUCCESS;
	}
}
          上面的代码,是一个Action业务控制器的最基本实现,execute方法是Action类默认处理请求的方法,在处理完请求之后,Action方法返回一个字符串,struts框架根据该字符串以及struts.xml配置映射到具体的物理视图页面(例如JSP),struts.xml配置文件,下面讲到!

          

           4、struts框架提供了struts.xml配置文件让用户配置自定义的Action类,试想一下,即核心控制器在拦截用户请求后,根据struts.xml配置文件的相应配置寻找可以处理请求的Action,若无相应Action配置,则抛出错误信息.以下是最基本的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>
    <package name="default" namespace="/" extends="struts-default"> 
        <action name="loginAction" class="com.stuts2.demo.action.LoginAction">
            <result name="success">index.jsp</result>
            <result name="error">login.jsp</result>
        </action>
    </package>
</struts>
             struts:该配置文件根元素,有且只有一个。

          package:包,用于组织Action,

                   name:指定该包的唯一标识,必需属性

                   namespace:指定该包的命名空间

                   extends:继承另一个包

         action:配置Action类,一个action标签配置一个Action类

         result:结果,Action处理后返回的结果,该标签配置了Action返回值与物理视图页面的映射


               5、定义一个登录页面login.jsp,用于向上面定义的LoginAction发送HTTP请求,代码如下所示

              

<%@ 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>登录界面</title>
</head>
<body>
<div>
	<form action="loginAction" method="post">
		<div>用户名:<input name="user.userName"></div>
		<div>密    码:<input name="user.passWord" type="password"></div>
		<input type="submit" value="登录">
	</form>
</div>
</body>
</html>
              用户单击“登录”按钮后,该jsp页面会向服务器发送HTTP请求,核心控制器拦截到HTTP后,从struts.xml配置文件中找到处理该请求的LoginAction,该类处理完请求之后,返回SUCCESS常量值,该常量具体值为success,根据Action的result配置,该请求将跳转到index.jsp(该页面具体代码省略)!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值