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. Python - if 条件控制

    注意 本篇图片素材都来自慕课网,因为素材过于优秀,直接拿过来了,加水印只是为了防止整篇文章被搬 前言 程序并非是一成不变的向下执行,有的时候也要根据条件的不同选择不一样的代码,这个时候便用到了分支结构 ...

  2. SaltStack 任意文件读写漏洞(CVE-2020-11652)

    漏洞影响 SaltStack < 2019.2.4 SaltStack < 3000.2 同CVE-2020-11651 poc git clone https://github.com/ ...

  3. Pytorch指定GPU的方法总结

    Pytorch指定GPU的方法 改变系统变量 改变系统环境变量仅使目标显卡,编辑 .bashrc文件,添加系统变量 export CUDA_VISIBLE_DEVICES=0 #这里是要使用的GPU编 ...

  4. QML用Instantiator动态创建顶级窗口

    关键点 使用Model驱动Instantiator QML里面的hashmap: QQmlPropertyMap 上一次说到用 QQmlApplicationEngine 多次load的方式创建多个一 ...

  5. 【LeetCode】424. 替换后的最长重复字符

    424. 替换后的最长重复字符 知识点:字符串,滑动窗口: 题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含 ...

  6. OpenGL学习笔记(六)坐标系统

    目录 一.衔接 二.概述 三.各个坐标系统 局部空间 世界空间 观察空间 裁剪空间 四.两种投影矩阵 正射投影 透视投影 五.把它们都组合到一起 六.编码实现 1. 实现卡片旋转 2. 实现正方体旋转 ...

  7. SpringCloud升级之路2020.0.x版-13.UnderTow 核心配置

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford Undertow ...

  8. U盘自动弹出脚本

    需要微软的Sysinternals Suite中的sync工具,解压到d:\apps下. ahk脚本: #u:: ; eject usb drive InputBox, myInp, Remove U ...

  9. C++ 基于STL的演讲比赛流程管理系统(sort算法+小型算法(accumulate)+内建函数对象+string字符串拼接+字符串截取+多个容器基础操作+与用户交互+文件的读写+保存+重建+整体文件数据的清空)

    1 /* 2 比赛规则: 3 学校举行一演讲比赛,共12个人参加,比赛两轮,第一轮为淘汰赛 第二轮为决赛 4 每名选手都有对应的编号:如10001~10012 5 比赛方式:分组比赛 每组6人 6 第 ...

  10. Echarts 展示两条动态数据曲线

    利用Echarts 展示两条动态数据曲线,每1秒刷新一下数据,在echart官网例子基础上修改,修改了仿真数据的生成方式.生成数量,曲线数量,最总效果图如下: 详细代码如下: 遇到的主要问题点, 1, ...