Struts2 框架笔记主要对跳转路径,挎包跳转,拦截器进行应用,定义成员变量,收取客户端参数等详细说明

这篇博客深入探讨了Struts2框架的使用,包括MVC模式概述,环境搭建,配置文件设置,Action接口实现,ServletActionContext工具类的应用,各种跳转方式如包跳转和全局跳转,以及拦截器的实现,特别是强制登录拦截器和params拦截器的使用,同时详细介绍了如何接收不同类型的参数。
摘要由CSDN通过智能技术生成

MVC概述

1)MVC是一种编程思想,人为的将                        web系统分为三个层次。
2)MVC好处:解耦合,提高系统的可维护型和可拓展性。
M-model:数据模型层 (DAO service entity) 
V——View:视图(jsp/html)
C-Controller:控制层(servlet,Sturts2,springMVC)
二,框架的概念
1)解决的问题:框架解决的问题 是开发过程中通用的问题;
2)好处:提高开发效率。

二Struts2 框架

1.充当了MVC中的控制层,替换servlet//底层封装了 servlet 的相关 API,但是他不是 servlet
 2.servlet充当控制器 存在的弊端。
 1):收集客户端数据的代码存在冗余
 2):数据类型需要转换,麻烦。
 3)都需要进行编码格式设置。
 4):跳转的路径写死在程序中。后期修改时麻烦。
 3.Struts2开发思路
 uri:URI 是统一资源标识符 项目往后的路径 
 url pattern 
 url:  是统一资源定位符 包含了 uri
 
 

Struts2开发

1.获取setuts2框架
1.1 到 
搭建环境 导入jar包

初始化配置--开启 struts2

3.引入配置文件


1.搭建环境 导入jar包

2019-03-05_130138

2初始化配置 配置 web.xml文件
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <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>
</web-app>
3.引入 struts2.xml 配置文件 放在src下
idea软件在将web项目时直接勾上struts2.xml文件选项即可
4. 控制层的实现类 实现 Action 接口
package com.action;
import com.opensymphony.xwork2.Action;
public class Test1Action implements Action {
   
    @Override
    public String execute() throws Exception {
   
        return "success";
    }
}

样例代码 以展示所有为列
package com.action;
import com.entity.Empl1;
import com.opensymphony.xwork2.Action;
import com.service.Emp1Service;
import com.service.Emp1ServiceImpl;
import org.apache.struts2.ServletActionContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;

public class ShowAllEmp1Action implements Action {
   
    //展示所有功能
    @Override
    public String execute() throws Exception {
   
        //利用 ServletActionContext 工具类 获取 request,respinse......
        HttpServletRequest request = ServletActionContext.getRequest ();
        //调用业务
        Emp1Service emp1Service = new Emp1ServiceImpl ();
        List<Empl1> empl1s = emp1Service.showAllEmp1Service ();
        request.setAttribute ("emplist", empl1s);
        //跳转
        HttpSession session = request.getSession ();
        Empl1 e = (Empl1) session.getAttribute ("emp");
        if (e!=null) {
   
            String status = e.getStatus ();
            if ("1".equals (status)) {
   
                System.out.println ("普通用户页面");
                return "showOkUser";
            } else {
   //管理员
                System.out.println ("管理员用户页面");
                return "showOkEmp";
            }
        }else{
   
            return "error";
        }
    }
}
5 ServletActionContext 工具类【重点】
作用:通过 ServletActionContext 可以拿到 servlet 的一些原生的API对象;
比如获取客户端参数request.getPrameter("name");
最常用:
 //利用 ServletActionContext 工具类 获取 request,respinse......
 HttpServletRequest request = ServletActionContext.getRequest ();

6 Struts2 的跳转
一 、同一个 package 下的跳转
    1. action 向 jsp 跳转
    a. forward
    <result name="success" type="dispatcher">/success.jsp</result>
    b. redirect
      <result name="success" type="redirect">/success.jsp</result>

Type属性:用来指定跳转的方式

二.package(包)内action与action之间的跳转

   a. forward
   <result name="success" type="chain"></result>
   b.redirect
     <result name="success" type="redirectAction"></result>
 
7 package 的作用
1.在实际开发过程中,action进行分类管理
2.每一个package标签 都有一个 namespace 属性,主要作用就是从访问路径上 来区分不同 package下的action,namespace的值 是访问某个 action路径的一部分,必须以/开头
注意:namespace 的默认 就是 /
8 挎(package)包跳转
1.挎包跳转的时候只有 action 到 action 的跳转
a.forward
b.redirect
//样例代码 测试挎包跳转  删除后跳到展示所有

    <package name="p1" extends="struts-default" namespace="/p1">       
        <!-- 展示所有功能   action 向 jsp跳 用 forward-->
        <action name="ShowAllEmp1Action" class="com.action.ShowAllEmp1Action">
            <result name="showOkUser" type="dispatcher">/Jsp/emplistU.jsp</result>
            <result name="showOkEmp" type="dispatcher">/Jsp/emplist.jsp</result>
        </action>
    </package>
  <package name="namespace" extends="struts-default" namespace="/p2">
        <!-- 删除一条数据  测试挎包跳转-->
        <action name="DeleteEmpAction" class="com.action.DeleteEmpAction">
            <result name="deleteOk" type="redirectAction">
                <!--  name="namespace" 表示调转的目标 所在的包 对应的namespase属性值-->
                <param name="namespace">/p1</param>
                <!--  name="actionName"表示调转的目标 所在的Action 对应的name属性值-->
                <param name="actionName">ShowAllEmp1Action</param>
            </result>
        </action>
    </package>
9 全局跳转
全局跳转 解决的是 result 标签的 配置 冗余;一般在项目后期的重构使用;
注意:1)全局跳转的标签 必须配置在所有的 action 的标签之前
2)全局跳转只在本包内有效
4)全局跳转与局部跳转冲突的时候,会以局部跳转优先。
eg:
<global-result>
	<result name="error" type="redirect">/error.jsp</result>
</global-result>
样例代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Soft
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值