SSH框架之Struts的初步使用

本文介绍了SSH框架中Struts的初步使用,包括maven项目的结构、Struts配置、动态方法调用、参数传递以及Struts与Tomcat的集成。详细讲解了相关jar依赖、web.xml配置、框架配置文件(struts-base.xml、struts.xml、struts-sy.xml)的设置,以及ModelDriven接口、set方法和对象属性传参的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:今天讲解新知识SSH框架的Struts的初步使用

码字不易,点个赞

转载请说明!

开发工具:eclipse


目录

maven项目的结构

一、配置struts

1.相关jar依赖

2、web.xml配置

3、框架配置文件配置(三个)

二、动态方法调用

 第二种方法

三、传参

1、Modeldrier接口传参

2、set方法传参

3、通过对象属性传参

运行结果

 四、Struts与Tomcat的集成

方法:实现接口

运行结果



maven项目的结构

 src 

   main

       java 写代码的地方

       resources 放配置的地方

       wabapp  放页面的地方

   test

        java 写测试代码的地方

        resources 放测试代码对应配置的地方

一、配置struts

1.相关jar依赖


<dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.5.13</version>
        </dependency>
 
 
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

2、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>

3、框架配置文件配置(三个)

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.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>
	<!-- <include file="struts-order.xml"></include> -->
</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">
	<!-- {1}代表第1个* 调后台的那个方法-->
	<!-- {2}代表第2个* 调用方法跳转到哪个界面-->
	 <action name="/demo1_*" class="com.hpw.one.web.Demo1Action" method="{1}">
	  <result name="bookEdit">/bookEdit.jsp</result>
	 </action>
	 <!-- 
	 <action name="/demo1_*_*" class="com.hpw.one.web.Demo1Action" method="{1}">
	  <result name="{2}">/{2}.jsp</result>
	 </action>
	  -->
	</package>
</struts>

二、动态方法调用

在struts-sy.xml 里面做配置

<!-- {1}代表第1个* 调后台的那个方法--> 
<action name="/demo1_*" class="com.hpw.one.web.Demo1Action" method="{1}">
	  <result name="bookEdit">/bookEdit.jsp</result>
	 </action>

Demo1Action

package com.hpw.one.web;

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

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

import com.hpw.one.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class Demo1Action extends ActionSupport implements ModelDriven<User>{
	

public String add() throws Exception {
	System.out.println("add方法...");
	return "bookEdit";
}

public String del() throws Exception {
	System.out.println("del方法...");
	return "bookEdit";
}

public String edit() throws Exception {
	System.out.println("edit方法...");
	return "bookEdit";
}

public User getModel() {
	return user1;
}


}

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>struts的动态方法调用</h3>
<a href="${pageContext.request.contextPath }/sy/demo1_add.action">新增</a><br>
<a href="${pageContext.request.contextPath }/sy/demo1_edit.action">修改</a><br>
<a href="${pageContext.request.contextPath }/sy/demo1_del.action">删除</a><br>

</body>
</html>

 第二种方法

在struts-sy.xml 里面做配置

    <!-- {1}代表第1个* 调后台的那个方法-->
	<!-- {2}代表第2个* 调用方法跳转到哪个界面-->
 <action name="/demo1_*_*" class="com.hpw.one.web.Demo1Action" method="{1}">
	  <result name="{2}">/{2}.jsp</result>

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>struts的动态方法调用</h3>
<a href="${pageContext.request.contextPath }/sy/demo1_add_bookEdit.action">删除</a><br>
</body>
</html>

三、传参

1、Modeldrier接口传参

2、set方法传参

3、通过对象属性传参

package com.hpw.one.web;

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

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

import com.hpw.one.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class Demo1Action extends ActionSupport implements ModelDriven<User>,ServletRequestAware,ServletResponseAware{
	
	private HttpServletRequest req;
	private HttpServletResponse resp;
	private User user1 = new User();
	private String sex;
	private User user2;
	
public User getUser1() {
		return user1;
	}

	public void setUser1(User user1) {
		this.user1 = user1;
	}

	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() throws Exception {
	System.out.println("add方法...");
	return "bookEdit";
}

public String del() throws Exception {
	System.out.println("del方法...");
	return "bookEdit";
}

public String edit() throws Exception {
	System.out.println("edit方法...");
	return "bookEdit";
}

public String list() throws Exception {
	System.out.println("list方法...");
	System.out.println(user1);
	System.out.println(user2);
	System.out.println(sex);
	HttpServletRequest request = ServletActionContext.getRequest();
	request.setAttribute("age", 12);
	req.setAttribute("hobby", "ccc");
	return "bookEdit";
}

public User getModel() {
	return user1;
}

@Override
public void setServletResponse(HttpServletResponse arg0) {
   this.resp = arg0;	
}

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



}

 

运行结果

Modeldrier接口传参

 

set方法传参

 通过对象属性传参

 四、Struts与Tomcat的集成

方法:实现接口


① Demo1Action 继承ActionSupport 实现ModelDriven<User>,ServletRequestAware,ServletResponseAware
②重写ServletRequestAware,ServletResponseAware方法
 

package com.hpw.one.web;

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

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

import com.hpw.one.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class Demo1Action extends ActionSupport implements ModelDriven<User>,ServletRequestAware,ServletResponseAware{
	
	private HttpServletRequest req;
	private HttpServletResponse resp;
	private User user1 = new User();
	private String sex;
	private User user2;
	
public User getUser1() {
		return user1;
	}

	public void setUser1(User user1) {
		this.user1 = user1;
	}

	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 list() throws Exception {
	System.out.println("list方法...");
	System.out.println(user1);
	System.out.println(user2);
	System.out.println(sex);
	HttpServletRequest request = ServletActionContext.getRequest();
	request.setAttribute("age", 12);
	req.setAttribute("hobby", "ccc");
	return "bookEdit";
}

public User getModel() {
	return user1;
}

@Override
public void setServletResponse(HttpServletResponse arg0) {
   this.resp = arg0;	
}

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



}

bookEdit.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>
成功界面----------------
${age }
${hobby }
</body>
</html>

运行结果

到这里就结束了,欢迎大佬指点  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值