struts2笔记之第六讲

[align=center][size=large]struts2笔记之第六讲[/size][/align]

Struts2的Action访问Servlet API
1、可以通过ActionContext访问Servlet API 此种方式没有侵入性

使用方法如下:
*将登陆信息设置到session中
ActionContext.getContext().getSession().put("user", username);

*采用如下方式访问request对象
ActionContext.getContext().put("time", new Date());

*采用如下方式访问application对象
ActionContext.getContext().getApplication().put("我的应用程序", "我的应用程序");

*取得表单数据也可以用以下方式:request.getParameter();
 String username = (String) ActionContext.getContext().getParameters().get("username");



2.在Struts2中默认为转发,也就是<result>标签中的type="dispatcher",type的属性可以修改为重定向
<result name="login" type="dispatcher">/login.jsp</result>


(type的默认值为dispatcher,就是type="dispatcher" 表示转发)
Struts2的重定向有两种:
*、type="redirect",可以重定向到任何一个web资源,如jsp或Action,如果要重定向到Action,需要写上后缀,xxxx.action
  <result name="login" type="redirect">/login.jsp</result> 
<result name="login" type="redirect">login.action</result>

*、type="redirectAction" 可以重定向到Action,不需要写后缀,此种方式更通用些,不会因为后缀的改变影响配置
  <result name="login" type="redirectAction">login</result> 



3、关于Struts2的type类型,也就是Result类型,他们都实现了共同的接口Result,都实现了execute方法,
他们体现了策略模式(策略模式:可以配置的),
具体Result类型参见:struts-default.xml文件

<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>

上面体现的策略模式,所以我们完全可以自己根据需求扩展Result类型

4、全局Result和局部Result
*局部的Result
 <result name="login" type="redirect">/login.jsp</result> 


* 全局Result

<global-results>
<result name="login" type="redirect">/login.jsp</result>
</global-results>


例子:

LoginAction.java文件

package com.struts2;

import java.util.Date;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class LoginAction implements Action {
private String username;
private String password;

/**
* struts2 默认调用这个方法,返回字符串
* @return
* @throws Exception
*/
public String execute() throws Exception{
if("admin".equals(username) && "admin".equals(password)){
//将登陆信息设置到session中
ActionContext.getContext().getSession().put("user", username);
//采用如下方式访问request对象
ActionContext.getContext().put("time", new Date());
//采用如下方式访问application对象
ActionContext.getContext().getApplication().put("我的应用程序", "我的应用程序");
//取得表单数据也可以用以下方式
String username = (String) ActionContext.getContext().getParameters().get("username");
return "success";
}else{
return "error";
}

}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}


MustLoginAction.java文件

package com.struts2;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class MustLoginAction implements Action {

@Override
public String execute() throws Exception {
if(ActionContext.getContext().getSession().get("user")==null){
//重定向到登陆页面
return LOGIN;
}else{
return SUCCESS;
}
}

}


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>
<!--当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置-->
<constant name="struts.configuration.xml.reload" value="true"/>
<!--会提供更加友好的提示信息-->
<constant name="struts.devMode" value="true"/>
<!-- 需要继承struts-defaluts包,这样就拥有基本的功能 -->
<package name="struts2" extends="struts-default">
<!-- 全局Result -->
<global-results>
<result name="login" type="redirect">/login.jsp</result>
</global-results>
<action name="login" class="com.struts2.LoginAction">
<result>/login_success.jsp</result>
<result name="error">/login_error.jsp</result>
</action>

<action name="mustLogin" class="com.struts2.MustLoginAction" >
<!-- type的默认值为dispatcher,就是type="dispatcher" 表示转发 -->
<!-- <result name="login" type="dispatcher">/login.jsp</result> -->
<!-- type="redirect",可以重定向到任何一个web资源,如jsp或Action,如果要重定向到Action,需要写上后缀,xxxx.action -->
<!-- <result name="login" type="redirect">/login.jsp</result> -->
<!-- <result name="login" type="redirect">login.action</result> -->
<!-- type="redirectAction" 可以重定向到Action,不需要写后缀,此种方式更通用些,不会因为后缀的改变影响配置 -->
<!-- <result name="login" type="redirectAction">login</result> -->
<!-- 局部的Result -->
<!-- <result name="login" type="redirect">/login.jsp</result> -->
<result >/must_login.jsp</result>
</action>

</package>

</struts>


index.jsp文件,核心内容
   
<a href="login.jsp">登陆</a> <br>
<a href="mustLogin.action">访问受保护的页面</a> <br>

must_login.jsp文件加一句话:
该页面是受保护的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值