Struts2学习--第二天

Struts2学习–第二天

1、result标签
  •  作用及属性:
    1)作用:用于配置结果视图(结果视图可以是jsp/HTML,也可以是一个action)
    2)属性:
    Name: 指定逻辑结果视图,作用是和动作方法返回值进行比较
    Type: 指定前往结果视图的方式;其取值来源于struts-default.xml文件中package名称是struts-default包中的定义类型。
    3)常用的结果类型:
    dispatcher:请求转发(默认值)
    Redirect:重定向
    redirectAction:重定向到另外一个动作
    在这里插入图片描述
  •  重定向和请求转发的区别:
    在这里插入图片描述
  •  结果视图分类(全局结果视图、局部结果视图)
    全局结果视图:
    • 定义是放在action标签外面,在global-result标签内部的结果视图;
    • 可以在多个视图中使用。
    • 优先级:先找局部,在找全局。
      在这里插入图片描述
2、访问ServletAPI的两种方式

ServletAPI:HTTPServletRequest、HttpServletResponse、HTTPSession、ServletContext

  • 1) 第一种:使用struts框架提供的一个工具类–ServletActionContext,该类包含了相应的动态方法,可以直接获取 ,此种方式是开发中用的最多的一种方式
public class Demo1Action {

	private HttpServletRequest request;
	private HttpServletResponse response;
	private HttpSession session;
	private ServletContext application;
	/**
	 * 动作方法
	 * */
	public String demo1() {
		request = ServletActionContext.getRequest();
		response = ServletActionContext.getResponse();
		application = ServletActionContext.getServletContext();
		session = request.getSession();
		System.out.println(request);
		System.out.println(response);
		System.out.println(session);
		System.out.println(application);
		System.out.println("Demo1Action执行成功!!!!!!!!");
		return "success";
	}
}

在这里插入图片描述

  • 2)第二种:通过实现不同的接口,获取不同的对象
    使用request,需要实现ServletRequestAware
    使用response,需要实现ServletResponseAware
    使用servletContext,需要实现ServletContextAware
public class Demo2Action implements ServletRequestAware,ServletResponseAware,ServletContextAware{

	private HttpServletRequest request;
	private HttpServletResponse response;
//	private HttpSession session;
	private ServletContext application;
	/**
	 * 动作方法
	 * */
	public String demo2() {
		request = ServletActionContext.getRequest();
		response = ServletActionContext.getResponse();
		application = ServletActionContext.getServletContext();
//		session = request.getSession();
		System.out.println(request);
		System.out.println(response);
//		System.out.println(session);
		System.out.println(application);
		System.out.println("Demo1Action执行成功!!!!!!!!");
		return "success";
	}
	@Override
	public void setServletResponse(HttpServletResponse response) {
		this.response = response;
		
	}
	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
		
	}
	@Override
	public void setServletContext(ServletContext appliaction) {
		this.application = appliaction;
		
	}

}

在这里插入图片描述

3、Struts2中的请求参数封装
  •  三种封装方式
    • 1)属性驱动-没有实体类
      在这里插入图片描述
    • 2) 属性驱动-有实体类
      在这里插入图片描述
    • 3) 模型驱动
      在这里插入图片描述
  •  请求参数封装的一些实现细节
  • 细节:
    1)Struts2框架会为我们解决post中的请求乱码问题,但是get请求不解决
    2)Struts2框架会自动为我们转换数据类型:
    基本类型自动转换
    字符串会按照逗号加空格的方式拼接成字符串
    日期格式会按照本地各式转化成日期对象(本地格式:yyyy-MM-dd)
    3)执行参数封装,是一个名为params的拦截器实现的。
    封装的规则只有一个,它会去指定的位置找属性,找到之后调用set方法赋值
    4)特别:模型驱动的实现,除了params拦截器之外,还需要一个叫modelDriven的拦截器配合
4、案例—使用struts2实现客户保存
5、请求参数封装失败后的处理办法
1)<input> 配置input结果视图,视图路径:从哪来回哪去
2)提示错误信息
3)把提交的数据回显回来(HTML标签和struts标签都可以实现)
6、关于中文提示的问题
  • I18N:国际化(现在不常用)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值