Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。

一、 Struts2的环境搭建

1.在maven项目的pom.xml中引入Struts的依赖

1      <dependency>
2 <groupId>org.apache.struts</groupId>
3 <artifactId>struts2-core</artifactId>
4 <version>2.5.13</version>
5 </dependency>

  2.导入Struts所需的配置文件

  struts-base.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 设置编码格式 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 开启动态方法调用 -->
<constant name="struts.devMode" value="true" />
<!-- 修改代码在不重启项目的情况下也能立即生效 -->
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.i18n.reload" value="true" />
<!-- 开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- struts2.5以后加这个配置才能开启动态方法调用 -->
<package name="base" extends="struts-default" abstract="true">
<global-allowed-methods>regex:.*</global-allowed-methods>
</package>
</struts>

  struts-sy.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- /user/bookAction?methodName=list
/sy/bookAction?methodName=list
-->
<package name="sy" extends="base" namespace="/sy">
<action name="/demo_*" class="com.liuwenwu.web.HelloAction" method="{1}">
<result name="rs">/rs.jsp</result>
</action>
</package>
</struts>

  struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- struts默认的配置文件 -->
<include file="struts-default.xml"></include>
<!-- struts基础配置文件 -->
<include file="struts-base.xml"></include> <include file="struts-sy.xml"></include>
</struts>

  3.配置核心过滤器 web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>Archetype Created Web Application</display-name>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>

二、动态方法的调用

  action代码

    public String add() {
System.out.println("调用add方法");
return "rs"; } public String del() {
System.out.println("调用del方法");
return "rs"; }

  js页面代码 测试是否成功

<a href="${pageContext.request.contextPath }/sy/demo_add.action">新增</a>

<a href="${pageContext.request.contextPath }/sy/demo_del.action">删除</a>

  控制台有相应的输出就是成功了

三、struts前台传递参数到后台

三种方法:

         1.implements modelDrivern
      2.类实例.属性名
      3.set/get

  先建立一个Cal实体类

package com.liuwenwu.entity;

public class Cal {

    private String num1;
private String num2;
public String getNum1() {
return num1;
}
public void setNum1(String num1) {
this.num1 = num1;
}
public String getNum2() {
return num2;
}
public void setNum2(String num2) {
this.num2 = num2;
}
@Override
public String toString() {
return "Cal [num1=" + num1 + ", num2=" + num2 + "]";
} }

  1.实现modelDrivern

public class HelloAction implements ModelDriven<Cal>,ServletRequestAware{
private Cal cal1=new Cal(); @Override
public Cal getModel() {
return cal1;
} /**
* implements modelDrivern 接收参数值
* @return
*/
public String accept1() {
System.out.println("cal1:"+cal1); return "rs";
} }

  jsp页面代码

<a href="${pageContext.request.contextPath }/sy/demo_accept1.action?num1=20&&num2=5">accept1</a>

  2.类实例.属性名

    private Cal cal2;

    public Cal getCal2() {
return cal2;
} public void setCal2(Cal cal2) {
this.cal2 = cal2;
} /**
* 类实例.属性名 接收参数值
* @return
*/
public String accept2() {
System.out.println("cal2:"+cal2);
return "rs"; }

  jsp页面代码

<a href="${pageContext.request.contextPath }/sy/demo_accept2.action?cal2.num1=20&&cal2.num2=5">accept2</a>

  3.set/get

  

    private String sex;

    public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} /**
* set/get 接收参数值
* @return
*/
public String accept3() {
System.out.println(sex);
return "rs";
}

  jsp页面代码

<a href="${pageContext.request.contextPath }/sy/demo_accept3.action?sex=nv">accept3</a>

四、后台传值到前台 

  set/get定义的属性是可以接受到的
  req.set.....

  1.注入方式(耦合):实现ServletRequestAware接口

public class HelloAction implements ModelDriven<Cal>,ServletRequestAware{
//注入耦合
private HttpServletRequest req; /**
* implements modelDrivern 接收参数值
* @return
*/
public String accept1() {
System.out.println("cal1:"+cal1);
//注入耦合
req.setAttribute("cal1", cal1);
return "rs";
} @Override
public void setServletRequest(HttpServletRequest req) {
this.req=req; }
}

  2.非注入(耦合)

    /**
* implements modelDrivern 接收参数值
* @return
*/
public String accept1() {
System.out.println("cal1:"+cal1);
//非注入耦合
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("cal1", cal1);
return "rs";
}

  测试一下:

struts2的初步认识的更多相关文章

  1. struts2的初步认识!

    struts2的jar包会完成一些工作,让你的数据和显示很好的联系在一起.     开始的时候,主要通过三个点来完成Struts2的工作          1,JAVA类     2,struts.x ...

  2. 使用MyEclipse 开发struts2框架结构详细教程——以登录为例

    1.首先建立Web Project,名称为:struts2 ,然后选择Java EE6.0,点击Finish. 2.右击“struts”选择MyEclipse->Add Struts Capab ...

  3. 基于MVC设计模式的Web应用框架:struts2的简单搭建(一)

    Struts2的初步介绍 Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴.京东等互联网.政府.企业门户网站.虽然之前存在了很大的安全漏洞,在2013年让苹果.中国移动.中国联 ...

  4. Struts2初步学习总结

    Struts2当时上课的时候老师给我们讲过,了解过一些,但也仅仅是了解,,,没动手去做,准确的说是试了一下,然后没做成功,,,现在又想把这个夹生饭给煮一下了,,,, 结合W3Cschool和轻量级Ja ...

  5. struts2 初步总结

    1.Struts2的概述: 2.Struts2的入门: * 2.1下载struts2的zip包. * 2.2创建web工程. * 2.3配置... 3.Struts2的开发流程: * 3.1流程: * ...

  6. 【Struts2】新建一个Struts2工程,初步体验MVC

    实现目标 地址栏输入http://localhost:88/Struts2HelloWorld/helloworld.jsp 输入用户名,交由http://localhost:88/Struts2He ...

  7. Struts2初步接触

      使用idea快速搭建Struts2的Maven项目    首先使用intelij idea部署Maven项目 1.jar包引入 pom.xml 我们用的是阿里云 我用的是最新版的Struts2核心 ...

  8. Struts2简介以及初步搭建配置

    一.基本介绍 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. ...

  9. ssh整合思想初步 struts2与Spring的整合 struts2-spring-plugin-2.3.4.1.jar下载地址 自动加载Spring中的XML配置文件 Struts2下载地址

    首先需要JAR包 Spring整合Structs2的JAR包 struts2-spring-plugin-2.3.4.1.jar 下载地址 链接: https://pan.baidu.com/s/1o ...

随机推荐

  1. SpringBoot数据访问之Druid数据源的使用

    数据访问之Druid数据源的使用 说明:该数据源Druid,使用自定义方式实现,后面文章使用start启动器实现,学习思路为主. 为什么要使用数据源: ​ 数据源是提高数据库连接性能的常规手段,数据源 ...

  2. [.NET大牛之路 005] .NET 的执行模型

    .NET大牛之路 • 王亮@精致码农 • 2021.07.06 前面我们介绍 .NET 历史时讲过,微软基于 .NET Framework 重新设计并创造了跨平台的 .NET Core,目前已经发展到 ...

  3. Java-Dubbo学习及整合SpringBoot

    Dubbo架构 Dubbo是Java的RPC框架,具有三大核心功能:面向接口的远程方法调用,智能容错和负载均衡,以及服务的自动注册和发现 Dubbo架构图: 节点角色说明: 节点 说明 Provide ...

  4. 结合场景使用Redis缓存与数据库同步

    Redis缓存与MySQL数据库与同步 什么场景用到了Redis缓存? 1.广告数据 2.搜索时,分类品牌名称,分类名称和规格数据 3.购物车 4.支付 问题:如何实现? 1.广告数据 先查询Redi ...

  5. 轻松上手SpringBoot+SpringSecurity+JWT实RESTfulAPI权限控制实战

    前言 我们知道在项目开发中,后台开发权限认证是非常重要的,springboot 中常用熟悉的权限认证框架有,shiro,还有就是springboot 全家桶的 security当然他们各有各的好处,但 ...

  6. Blind SQL injection:盲注详解

    什么是盲注? 当应用程序易受SQL注入攻击,但其HTTP响应不包含相关SQL查询的结果或任何数据库错误的详细信息时,就会出现盲SQL注入. 对于盲目SQL注入漏洞,许多技术(如联合攻击)都是无效的,因 ...

  7. sqli-labs 16-20

    less 16: 和less 15基本一致,只是对参数进行了 ") 的包裹,注意闭合语句使用延时注入即可. 下面给一个payload示例: uname=admin")and if( ...

  8. Maven 下载、安装与配置

    一.需要准备的东西 确定电脑上已经成功安装JDK 二.下载与安装 1. 前往https://maven.apache.org/download.cgi下载最新版的Maven程序: 注意:Maven3. ...

  9. contos7 安装weblogic10.3 _wls1036_generic.jar

    环境:CentOS7+jdk1.8 weblogic下载地址1: http://www.oracle.com/technetwork/cn/middleware/weblogic/downloads/ ...

  10. PyCharm启动报错 TypeError: unsupported operand type(s) for /: ‘str’ and ‘str’ 解决

    这个提示大概是说:"类型错误:不支持操作类型为字符串和字符串",直接把两个字符串(BASE_DIR = os.path.dirname(os.path.dirname(os.pat ...