struts2

Struts2

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

导入的外部xml文件
在这里插入图片描述
在pom.xml中加入此段代码

<dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.5.13</version>
        </dependency>

User类
代码:

package com.zking.entity;

public class User {
private String uid;
private String uname;
public User(String uid, String uname) {
	super();
	this.uid = uid;
	this.uname = uname;
}
public User() {
	// TODO Auto-generated constructor stub
}
public String getUid() {
	return uid;
}
public void setUid(String uid) {
	this.uid = uid;
}
public String getUname() {
	return uname;
}
public void setUname(String uname) {
	this.uname = uname;
}
@Override
public String toString() {
	return "User [uid=" + uid + ", uname=" + uname + "]";
}

} 

HelloAction类

package com.zking.web;


import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ModelDriven;
import com.zking.entity.User;
/* 1.动态方法的调用
 * 2.Struts中的传参
 *  1.set传参
 *  2.参数名。属性名传参
 *  3.实现modeldriven接口传参
 *  3.Struts与Tomcat的交互
 *  如何将后台的值传到前台去
 *  1.request传值
 *    
 *  2.值找传值(get方法传值)
 * 
 * */
public class HelloAction implements ModelDriven<User>,RequestAware,ServletRequestAware,ServletResponseAware {
	private User user1= new User();
	private User user2;
	private String sex;
	private String uname;
	
	private HttpServletRequest request;
	HttpServletResponse response;
	
      public User getUser2() {
		return user2;
	}
	public void setUser2(User user2) {
		this.user2 = user2;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public  String add() {
    	  System.out.println("add方法");
    	  return "success";
      }
      public  String del() {
    	  System.out.println("del方法");
    	  return "success";
      }
      public  String edit () {
    	  System.out.println("edit方法");
    	  return "success";
      }
      
      public  String list() {
    	  System.out.println("list方法");
    	  System.out.println("user1:"+user1);
    	  System.out.println("user2:"+user2);
    	  System.out.println("sex:"+sex);
    	  System.out.println("uname"+uname);
    	// HttpServletRequest request = ServletActionContext.getRequest();
    	// request.setAttribute("rs", user1); 
//    	  ActionContext context =ActionContext.getContext();
//    	  context.get("");
    	  this.request.setAttribute("rs", user1);
    	 return "success";
      }
	@Override
	public User getModel() {
		// TODO Auto-generated method stub
		return user1;
	}
	@Override
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request = request;
	}
	@Override
	public void setServletResponse(HttpServletResponse response) {
		// TODO Auto-generated method stub
		this.response =response;
	}
	@Override
	public void setRequest(Map<String, Object> request) {
		// TODO Auto-generated method stub
		
	}
}

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" />

	<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>
	<package name="sy" extends="base" namespace="/sy">
	<action name="/hello_*" class="com.zking.web.HelloAction" method="{1}">
	<result name="success">/success.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>
	<include file="struts-default.xml"></include>
	<include file="struts-base.xml"></include>
	<include file="struts-sy.xml"></include>
</struts>

新建jsp文件
success.jsp
代码:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
成功页面:${user2}
</body>
</html>

demo1.jsp
代码:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<h2>struts传参的三种方式</h2>
<a href="${pageContext.request.contextPath}/sy/hello_list.action?uid=001&&uname=zs">测试modelariven接口传参</a>
<a href="${pageContext.request.contextPath}/sy/hello_list.action?sex=nv">测试set传参</a>
<a href="${pageContext.request.contextPath}/sy/hello_list.action?user2.uid=002&&user2.uname=ls">测试参数名,属性名传参</a>
<h2>与J2EE容器的交互 </h2>
</body>
</html>

动态调用方法(mvc不具备的优势)

action代码

1     public String add() {
2         System.out.println("add方法");
3         return "success";
4     }
5     
6     public String edit() {
7         System.out.println("edit方法");
8         return "success";
9     }

jsp代码

<h2>动态调用方法</h2>
<a href="${pageContext.request.contextPath }/sy/hello_add.action">add方法</a>
<a href="${pageContext.request.contextPath }/sy/hello_edit.action">edit方法</a>

struts的传参

实现 modelDrivern接口传参
action代码

public String list() {
        System.out.println("list方法");
        System.out.println("user1:"+user1);
        }

jsp代码

<a href="${pageContext.request.contextPath }/sy/hello_list.action?uid=001&&uname=zs">测试modeldriven接口传参</a>&nbsp;&nbsp;

set传参
action代码

1 public String list() {
2         System.out.println("list方法");
3         System.out.println("sex:"+sex);4         }

jsp代码

<a href="${pageContext.request.contextPath }/sy/hello_list.action?sex=nv">测试set传参</a>&nbsp;&nbsp;

类实例.属性名

action代码

1 public String list() {
2          System.out.println("list方法");
3          System.out.println("user2:"+user2);
4          }

jsp代码

<a href="${pageContext.request.contextPath }/sy/hello_list.action?user2.uid=002&&user2.uname=ls">测试参数名.属性名传参</a>

struts与tomcat的交互

request传值,需要实现ModelDriven接口,调用ServletActionContext.getRequest()方法。

代码:

public String list() {
        System.out.println("list方法");
        System.out.println("user1:"+user1);
        System.out.println("user2:"+user2);
        System.out.println("sex:"+sex);
        HttpServletRequest request = ServletActionContext.getRequest();
        request.setAttribute("rs", user1);
        return "success";
    }

值栈传值(get方法传值),不需要操作,因为值栈传值会将传过来的值自动赋值
代码:

public String list() {
        System.out.println("list方法");
        System.out.println("user1:"+user1);
        System.out.println("user2:"+user2);
        System.out.println("sex:"+sex);
        return "success";
    }

注入与非注入

注入,注入需要实现ServletRequestAware接口,重写需要实现的方法setServletRequest;
将setServletRequest方法的参数私有化作为属性
代码:

 private HttpServletRequest request;

setServletRequest方法
代码

@Override
    public void setServletRequest(HttpServletRequest request) {
        this.request=request;
        
    }

属性调用
代码:

public String list() {
        System.out.println("list方法");
        System.out.println("user1:"+user1);
        System.out.println("user2:"+user2);
        System.out.println("sex:"+sex);
        this.request.setAttribute("rs",user1);
        return "success";
    }

非注入
request传值

代码:

public String list() {
        System.out.println("list方法");
        System.out.println("user1:"+user1);
        System.out.println("user2:"+user2);
        System.out.println("sex:"+sex);
        HttpServletRequest request = ServletActionContext.getRequest();
        request.setAttribute("rs", user1);
        return "success";
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值