struts入门

Struts

简介:struts是开源框架。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。

Struts 是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

提供struts学习路径

链接: https://pan.baidu.com/s/1-CeFPzUqns2iOhA2FucJRw 提取码: v3ft

导入jar包依赖(在pom.xml中)

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

导入xml文件(提供的链接中可以下载)
在这里插入图片描述

通过struts实现动态方法调用

提供项目大体结构
在这里插入图片描述
撸代码开始:
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>

UserAction.java

package com.wangcong.one;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{
public String list() {
	System.out.println("查询所有"+SUCCESS);
	return SUCCESS;
}
public String add() {
	System.out.println("增加");
	return SUCCESS;
}
public String del() {
	System.out.println("删除");
	return SUCCESS;
}
public String edit() {
	System.out.println("修改");
	return SUCCESS;
}

}

struts-sy.xml(类似于自定义MVC的中央控制器)

<?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>
<!-- 
相对于mvc的差异性
package:用来将一类子控制器进行分类
http://localhost:8080/struts/sy/user_del.action
中/sy对应的namespace="/sy"
 -->
	<package name="sy" extends="base" namespace="/sy">
	<action name="/user_*" class="com.wangcong.one.UserAction" method="{1}">
	<result name="success">/test.jsp</result>
	</action>
	</package>
</struts>

test.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>
动态方法调用
</body>
</html>

测试
在这里插入图片描述
结果:
在这里插入图片描述测试
在这里插入图片描述
结果:
在这里插入图片描述
测试
在这里插入图片描述
结果:
在这里插入图片描述
测试
在这里插入图片描述
结果:
在这里插入图片描述

jsp传递参数到后台的三种方式:

提供项目大体(demo1.jsp)误报错不管
在这里插入图片描述
撸代码开始:
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>
<h3>讲解传参的三种方式</h3>
<a href="${pageContext.request.contextPath}/sy/demo_test1.action?sex=nv">测试1</a>
<a href="${pageContext.request.contextPath}/sy/demo_test2.action?uname=zx&&pwd=123">测试2</a>
<a href="${pageContext.request.contextPath}/sy/demo_test3.action?user2.uname=ls&&user2.pwd=1234">测试2</a>
</body>
</html> 

rs.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>
结果集页面
</body>
</html>

DemoAction.java

package com.wangcong.one.web;

import com.opensymphony.xwork2.ModelDriven;
import com.wangcong.one.entity.User;

/**
 * jsp传递参数到后台的三种方式:
 * @author only老k,我为自己带盐
 * 1.set传参
 * 2.实现modelDriven接口传参(自定义mvc的做法)
 * 3.类实例.属性传参
 */
public class DemoAction implements ModelDriven<User>{
   private String sex;
   private User user1=new User();
public String getSex() {
	return sex;
}

public void setSex(String sex) {
	this.sex = sex;
}

public User getUser2() {
	return user2;
}

public void setUser2(User user2) {
	this.user2 = user2;
}

private User user2;

/**
 * set传参是否成功
 * @return
 */
public String test1() {
	System.out.println(sex);
	return "rs";
}

/**
 * modeldriven接口传参是否成功
 * @return
 */
public String test2() {
	System.out.println(user1);
	return "rs";
}

/**
 * 类实例.属性传参是否传参成功
 * @return
 */
public String test3() {
	System.out.println(user2);
	return "rs";
}

@Override
public User getModel() {
	return user1;
}
}

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>
<!-- 
相对于mvc的差异性
package:用来将一类子控制器进行分类
http://localhost:8080/struts/sy/user_del.action
中/sy对应的namespace="/sy"
 -->
	<package name="sy" extends="base" namespace="/sy">
	<action name="/user_*" class="com.wangcong.one.web.UserAction" method="{1}">
	<result name="success">/test.jsp</result>
	</action>
	
	<action name="demo_*" class="com.wangcong.one.web.DemoAction" method="{1}">
	<result name="rs">/rs.jsp</result>
	</action>
	
	</package>
</struts>

运行图片
在这里插入图片描述
结果:
在这里插入图片描述

讲解struts与tomcat容器交互

提供项目大体
在这里插入图片描述

/**
 * 讲解struts与tomcat容器交互(将后台数据传到jsp)
 * 1.注入
 *     耦合     使用
 *     解耦
 * 2.非注入
 *     耦合     使用
 *     解耦
 * @author only老k,我为自己带盐
 *
 */

测试非注入耦合
撸代码开始:
TomcatAction.java

package com.wangcong.one.web;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ModelDriven;
import com.wangcong.one.entity.User;

/**
 * 讲解struts与tomcat容器交互(将后台数据传到jsp)
 * 1.注入
 *     耦合     使用
 *     解耦
 * 2.非注入
 *     耦合     使用
 *     解耦
 * @author only老k,我为自己带盐
 *
 */
public class TomcatAction implements ModelDriven<User>{
	private String sex;
	   private User user1=new User();
	   private User user2;
	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public User getUser2() {
		return user2;
	}

	public void setUser2(User user2) {
		this.user2 = user2;
	}
   /**
    * mvc:获取数据
    * HttpServletRequest req,HttpServletResponse resp
    * struts没有这种方式
    * HttpServletRequest req = ServletActionContext.getRequest();
    * @return
    */
	public String demo() {
		HttpServletRequest req = ServletActionContext.getRequest();
		req.setAttribute("rs", "测试非注入耦合");
		return "rs";
	}


	@Override
	public User getModel() {
		return user1;
	}
}

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>
<!-- 
相对于mvc的差异性
package:用来将一类子控制器进行分类
http://localhost:8080/struts/sy/user_del.action
中/sy对应的namespace="/sy"
 -->
	<package name="sy" extends="base" namespace="/sy">
	<action name="/user_*" class="com.wangcong.one.web.UserAction" method="{1}">
	<result name="success">/test.jsp</result>
	</action>
	
	<action name="demo_*" class="com.wangcong.one.web.DemoAction" method="{1}">
	<result name="rs">/rs.jsp</result>
	</action>
	<action name="tomcat_*" class="com.wangcong.one.web.TomcatAction" method="{1}">
	<result name="rs">/rs.jsp</result>
	</action>
	
	</package>
</struts>

在这里插入图片描述
结果:
在这里插入图片描述

测试注入耦合
TomcatAction.java

package com.wangcong.one.web;

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

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

import com.opensymphony.xwork2.ModelDriven;
import com.wangcong.one.entity.User;

/**
 * 讲解struts与tomcat容器交互(将后台数据传到jsp)
 * 1.注入
 *     耦合     使用
 *     解耦
 * 2.非注入
 *     耦合     使用
 *     解耦
 * @author only老k,我为自己带盐
 *
 */
public class TomcatAction implements ModelDriven<User>,ServletRequestAware{
 private HttpServletRequest request;
	
	private String sex;
	   private User user1=new User();
	   private User user2;
	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public User getUser2() {
		return user2;
	}

	public void setUser2(User user2) {
		this.user2 = user2;
	}
   /**
    * mvc:获取数据
    * HttpServletRequest req,HttpServletResponse resp
    * struts没有这种方式
    * HttpServletRequest req = ServletActionContext.getRequest();
    * @return
    */
	public String demo() {
//		HttpServletRequest req = ServletActionContext.getRequest();
//		req.setAttribute("rs", "测试非注入耦合");
		request.setAttribute("rs","测试注入耦合");
		return "rs";
	}


	@Override
	public User getModel() {
		return user1;
	}

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

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值