Strtus——基础

1.写一个mystrtus框架

MVC模式
	Model    模型
	View      视图
	Control  控制器
Control:控制器
	Servlet起到控制器的作用
	--》获取请求数据封装					【BeanUtils可以优化,(调用方法)】
	--》调用Service处理业务逻辑
	--》跳转(转发/重定向)				【跳转代码写死】
传统的MVC开发总结:
	1.跳转的代码写死,不灵活
	2.每次都要写servlet,web.xml中配置servlet(配置目的:请求找到servlet处理类)
需求:
	登录和注册
	登录成功		--》首页
	注册成功
			--》登录
			--》首页

2.struts

Struts就是基于MVC模式的框架(struts其实也就是servlet的封装,提高开发效率)
Struts开发步骤:

  1. web项目,引入struts-jar包
  2. web.xml中,引入struts的核心功能,配置过滤器.
  3. 开发action
  4. 配置action

Struts.xml所在路径:src/struts.xml

框架:
软件中的框架,是一种半成品,我们项目开发需要在框架的基础上进行。
因为框架已经实现了一些功能,这样就可以提高开发效率。
Struts2框架:
Struts1是最早的一种基于mvc模式的框架:
Struts2是在Struts1的基础上,融合了xwork的功能。
可以说:Struts2=Struts1+xwork
Struts2框架预先实现了一些功能:
	1.请求数据的自动封装
	2.文件上传的功能
	3.对国际化功能的简化
	4.数据校验的功能
	...................

Struts2的开发流程:

  1. 引入jar文件

    commons-fileupload.jar
    commons-io.jar
    commons-lang.jar
    freemarker.jar
    javassist-3.11.0.GA.jar
    log4j.jar
    ognl.jar
    struts2-core.jar
    xwork-core-2.3.4.jar
    
  2. 配置web.xml
    Tomcat启动–>加载自身web.xml–>加载所有项目的web.xml
    通过在项目的web.xml中引入过滤器:

    	Struts的核心功能的初始化,通过过滤器来完成。
    	filter:
    		init:项目启动时执行
    		doFilter:访问执行
    		destory:销毁执行
    
			<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>
  1. 开发Action
    注意:

    1.action类(动作类)一般继承ActionSupport类
    	即处理请求的类(struts中的action类取代servlet)
    2.action的业务方法,处理具体的请求
    	-->必须返回String
    	-->方法不能有参数
    
  2. 配置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>
 			<package name="xxx" extends="struts-default">
  			<action name="hello" class="cn.jjs.action.HelloAction" method="execute">
            	<result name="success" type="redirect">/success.jsp</result>
             </action>
    		</package>
		</struts>

Struts执行流程:

服务器启动:
	1.加载项目的web.xml
	2.创建Struts核心过滤器,执行filter-->init()
			struts-default.xml		核心功能的初始化
			struts-plugin.xml		struts相关插件
			struts.xml			    用户编写的配置文件
访问:
	3.用户访问Action,服务器根据访问路径名称,找对应的action配置,创建action对象。
	4.执行默认拦截器栈中定义的18个拦截器。
	5.执行action的业务处理方法
	(后面每次访问都会创建action)
struts-default.xml详解:
	目录:struts2-core.jar/struts-default.xml
	内容:
		1.bean节点指定struts在运行的时候创建的对象类型。
		2.指定struts-default包【用户写的package(struts.xml)一样要继承此包】
			package  struts-default中定义了:
				1.跳转的结果类型:
					dsipatcher		转发,不指定默认为转发。
					redirect	    重定向
					redirectAction	重定向到action资源
					stream			(文件下载的时候使用)
				2.定义了所有的拦截器:
					总共定义了32个拦截器
					为了拦截器引用方便,可以通过定义栈的方式引用拦截器。此时如果引用了栈,那么栈中的拦截器都会被引用。
				3.默认执行的拦截器栈,默认执行的action
					< default-interceptor-ref name="defaultStack"/>
					< default-class-ref class="com.opensymphony.xwork2.ActionSupport"/>
拦截器(基础):
	拦截器功能与过滤器功能类似:
	共同点:都拦截资源
	区别:
		过滤器:所有资源都可以过滤;(index.jsp/servlet/img/css/js)
		拦截器:只拦截action请求。
	拦截器是struts的概念,只能在struts项目中使用。
	过滤器是servlet的概念,能在含servlet的项目中使用。
	***用户访问的时候按顺序执行18个拦截器。先执行action类的创建,再执行拦截器,再执行业务方法。***
小问题:
	1.struts.xml配置文件中没有提示
		1.找到struts-2.0.dtd文件,拷贝到某个非中文目录。
		2.让MyEclipse关联到上面的dtd文件
			windows-->preferences-->搜索xml catalog
			配置:
				Location:上面的目录。
				Key:-//Apache Software Foundation//DTD Struts Configuration 2.0//EN
			或者:让你的电脑连接互联网,工具会自动下载dtd文件,缓存到工具中。

Struts配置详解

<!--
	package:定义一个包。包作用:管理action。
   (通常一个业务模板用一个包)
       name:包的名字,包名不能重复。
       extends:当前包继承自哪个包
               在struts中,包一定要继承struts-default
               struts-default是在struts-default.xml中定义的包
       abstract:表示当前包为抽象包,抽象包中不能有action的定义。否则运行时期报错
                abstract=true  只有当前包被其他包继承时使用。
                例如:
                < package name="basePackage" extends="struts-default" abstract="true">< /package>
                < package name="xxx" extends="basePackage">< /package>
       namespace:名称空间,默认为"/"
                作为路径的一部分,所以访问路径为:http://localhost:8080/项目/名称空间/ActionName
 	action:配置请求路径与Action类的映射关系
         name:请求路径名称
         class:请求处理action类的全名
         method:请求处理方法
    result:
        name:action处理方法返回值
        type:跳转的结果类型
        标签体中指定跳转的页面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值