• 【Struts2】Struts2技术基础(环境搭建、作用域、第一个Struts2程序)


    Struts2 框架

    Struts2 概念: mvc设计思想中,控制器的解决方案。(替代并简化 servlet的控制器开发)
    优点: ①代码解耦和(跳转路径不会写死在代码中
    ②自动接受请求参数,自动转化类型,自动封装成实体
    ③跳转路径的代码,消除
    ④一个Struts2控制器可以书写多个方法,便于管理
    ⑤Struts2代码书写角度,脱离Servlet的api.便于单元测 试(普通java类)

    1).第一个Struts2程序(Struts2的环境搭建、配置及其执行)

    (1)搭建Struts环境
    导入jar包 
    (2)导入struts.xml,放入src的根目录下
    (3)配置struts2的前端控制器(核心控制器),web.xml
    	<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>
     
    (4)写一个类和方法,在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="struts" extends="struts-default">
    		<action class="全类名 " name="访问action的名字" method="类的方法名">
    			<result name="ok">/index.jsp</result>
    		</action>
    	</package>
    </struts>
    启动TomCat访问时,路径+action的名字
    

    2).Struts2内置工具类(ServletActionContext)、接受请求参数、及其action的生命周期

    (1)Struts2内置工具类
    工具类: ServletActionContext
    作用:获得request  response  servletContext 对象。
    (2)Struts2接受请求参数
    ### struts接受请求参数核心特点
    ①使用Action的属性接受
    ②自动数据类型转化(Integer Double Long String Date)
    ③自动实体对象的封装
    ### 基本数据类型和包装类型数据接收,以及String、Date
    Integer Double Long String  Date(默认支持格式: yyyy-MM-dd yyyy年MM月dd日)
    ①在Action中声明属性
    ②属性名必须要和请求参数名保持一致
    ③提供标准set和get方法
    ### 数组类型(List集合类型)参数接受
    ①在Action中声明数组类型的属性。
    ②保证属性名和请求参数名一直
    ③提供set、get方法。
    ### 封装实体对象
    ①在action声明实体类型的属性
    ②保证请求参数的名字格式:`action的属性名.实体属性名`
    ③提供set和get方法
    (3)Struts2的Action的生命周期
    Servlet的生命周期:
    ①浏览器第一次访问创建
    ②tomcat关闭销毁
    ③一个Servlet类只创建一个servlet对象。
    Struts2实现的控制器生命周期:
    ①创建:浏览器每次访问,都会新建action对象。
    ②个数:N个。
    ③生命周期一次请求过程。
    优点:
    action使用属性接受数据,是线程安全。
    为什么要讲aciton设计多例?
    ①struts2使用action的属性接受数据。
    ②如果action只创建一个,多线程访问临街资源,线程不安全。
    底层设计:
    浏览器请求------sturts2的action---反射创建对象。(Action action = new XXxxAction)
    并request.setAttribute("名字",action);
    

    3).Struts2实战action的开发规范、跳转

    (1)实战Action开发规范
    控制器编写:将业务逻辑相关的控制器方法,放在同一个Action类中。
    package:
    作用: 在struts.xml管理action标签。
    将业务逻辑相关的控制方法的配置action标签,放在同一个package标签下。
    namespace:
    访问action: `/项目名/namespace/action的name`
    标签:
    <package name="user" extends="struts-default" namespace="/user">
         	<action name="fAction"></action>
    </package>
    访问: /项目名/user/fAction
    开发规范:将业务逻辑相关的action的访问路径,放在同一个namespace下。
    (2)跳转
    默认: action--->jsp(请求转发)
    ①Action--->JSP
    	请求转发 (展示所有控制器跳转到展示所有jsp): 默认:
    	请求重定向 (注册成功后跳转到登录页面):
    		<action name="" class="" method="">
    			<result name="方法返回值" type="跳转方式">跳转后的jsp的URL-pattern</result>
            </action>
    		type可选值:  dispatcher(请求转发) 、redirect(请求重定向)
    ②Action---->Action(同包跳转)
    		<action name="" class="" method="">
    			<result name="方法返回值" type="跳转方式">跳转后的action的名字</result>
            </action>
            type可选值:	chain(请求转发)、	redirectAction(请求重定向)
    ③Action跨namespace跳转到Action
    <action name="" class="" method="">
    	<result name="方法返回值" type="跳转方式">
    		<param name="namespace">目标跳转的action所在的namespace</param>
    		<param name="actionName">目标action的name</param>
        </result>
    </action>
    type:  chain(请求转发)、redirectAction(请求重定向)
    4).Request的作用域、struts2的常量配置、以及配置文件简化
    (1)request作用域
    ①通过ServletActionContext获得request对象。
    ②Action的属性自动放入request作用域中。
    	 
    (2)struts2的常量配置
    默认配置文件: struts2-core-2.3.16.3.jar  (org.apache.struts/default.properties)
    ①设置请求参数的编码:
       <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    ②设置action默认请求后缀
       struts.action.extension=action
       <constant name="struts.action.extension" value="do"></constant>
    ③文件上传大小设置
       struts.multipart.maxSize=2097152: 默认单个文件上传大小限制,单位字节: 2M
       设置文件上传大小为20M
       <constant name="struts.multipart.maxSize" value="20000000"></constant>
    (3)action配置文件简化
    ①配置通用的action访问路径
     
    ②特点:
    好处: 简化action标签,开发代码少。
    缺点: 可读性差。
    
  • 相关阅读:
    MySQL详细操作
    啥是SQL?
    MySQL之中文乱码问题
    Windows压缩包安装MySQL
    GIL(全局解释器锁)
    协程
    线程
    第八周 编程作业
    PCA
    第八周 第一部分
  • 原文地址:https://www.cnblogs.com/jwnming/p/13634968.html
Copyright © 2020-2023  润新知