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. js 倒计时退出

    <p>您已提交成功!<span id='submit_second'></span></p> $("#submit_second") ...

  2. netty系列之:netty架构概述

    目录 简介 netty架构图 丰富的Buffer数据机构 零拷贝 统一的API 事件驱动 其他优秀的特性 总结 简介 Netty为什么这么优秀,它在JDK本身的NIO基础上又做了什么改进呢?它的架构和 ...

  3. Linux--文件描述符、文件指针、索引节点

    Linux -- 文件描述符 文件描述符 Fd 当进程打开文件或创建新文件时,内核会返回一个文件描述符(非负整数),用来指向被打开的文件,所有执行I/O操作的系统调用(read.write)都会通过文 ...

  4. Java面向对象11——多态

    多态  package oop.demon01.demon06; ​ public class Application {     public static void main(String[] a ...

  5. 三年Android开发,月薪一万二,不敢跳槽,每天都很焦虑

    在我们的身边,存在一个普遍现象:很多人从事Android开发工作多年,走过的弯和坎,不计其数,经历的心酸难与外人道也.可是技术确难以提升.止步不前,薪资也只能看着别人水涨船高,自己却没有什么起色. 虽 ...

  6. 【LeetCode】39. 组合总和

    39. 组合总和 知识点:递归:回溯:组合:剪枝 题目描述 给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数  ...

  7. java中sort方法的自定义比较器写法(转载)

    java中sort方法的自定义比较器写法 摘要 在做一些算法题时常常会需要对数组.自定义对象.集合进行排序. 在java中对数组排序提供了Arrays.sort()方法,对集合排序提供Collecti ...

  8. 关于Feign、Jackson、RabbitMQ、Jrebel插件的开发中遇到的问题

    在工作实际开发中需要开发一个消息模块对外提供统一的接口feign调用提供消息加载到MQ队列的服务,采用泛型的形式. 刚开始搭建好之后,正好需要做一个全局的日志添加到zuul网关中,通过网关feign ...

  9. setsockopt中参数之SO_REUSEADDR的意义

    1.setsockopt中参数之SO_REUSEADDR的意义 1.一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用. SO_REUSE ...

  10. Swagger在线文档使用教程

    springboot整合Swagger2 1.首先创建一个springboot工程,在pom文件内导入依赖   <!--swagger依赖-->      <!--Swagger2- ...