ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SSH框架之Struts

2021-10-13 19:58:18  阅读:192  来源: 互联网

标签:传参 Struts String 框架 struts uname SSH public 自定义


前言:上次与大家分享了SSH框架之Maven,今天和大家分享的是SSH框架之Struts,其中struts与老早之前与大家分享的自定义MVC极其相似,但是也有不同之处,接下来来我将与大家分享自己所学的知识

一、明确目标:

        1、struts的配置

        2、struts的动态调用方法

        3、struts的传参的三种方式

        4、struts与tomcat的集成(合作)

二、struts的配置

        1、步骤:(与自定义mvc相比较)

                     1、建立依赖--->导入jar包(mvc是手动导入jar包,而struts直接在Maven的pom.xml文件中写好相关代码就可以了)

                            新建一个struts项目后,同样和Maven一样,首先要将web中的版本改为3.1                  

                            其次将java版本从2.3改为3.1,Dymanic的版本从1.5改为1.8(在这里纠正一点,之后完成改完版本之后,填写webapp时要写好绝对路径,就是src/main/webapp,而不是直接写webapp)

 

                             之后就要改变jdk的一个版本,上次与大家分享的是手动改造,今天与大家分享用代码改造,将以下代码复制到maven中的pom.xml文件中即可。当然在复制之前,要先写好<plugins></plugins> 在此中间写好一下代码。

	<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.7.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

		</plugins>

                             最后就是struts与Tomcat的集成:将以下代码写在<dependencies></dependencies>中,写好之后需要耐心等待(这时在下载需要的jar包)

<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>4.0.1</version>
			<scope>provided</scope>
		</dependency>

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

                     2、做好相关配置--->只要配置过滤器(mvc要到web.xml中配置好中央控制器,struts只要写好过滤器)

                         web.xml:(其中<filter-class></filter-class>中的类名是要点击ctrl+shfit+t搜索StrutsPrepareAndExecuteFilter,之后复制该类的全路径名)

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

                     3、开发:struts和自定义mvc一样的都要写好子控制器继承Actionsupport

 三、struts的动态调用方法

          与自定义mvc的方法相比,struts的动态调用方法更加灵活;struts的配置文件有三个(三个配置文件相同于自定义mvc的配置文件,三个配置文件相辅相成),自定义mvc的配置文件只有一个(web.xml)

1、配置文件(最主要的配置文件struts-sy.xml):

struts是调用的动态方法,理所当然写法与自定义mvc的写法不一样,如下图所示,在action中的name属性中,写法是/demo1_*,但是在自定义mvc中是直接写/demo1,class表示要进入的类。

第二大不同:

在struts-sy.xml中出现result节点,表示最后进入的结果界面。

第三大不同:

图中还出现了method属性,{1}表示取访问路径的第一个方法,改1是对应 /demo1_*后面的*

注意:有一个*,自然而然的想到了有两个*的写法/demo1_*_*,其中第一个*同样表示方法,第二个方法就表示要跳转的结果界面了

有两个*的写法:

2、子控制器类:对应的方法

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";
	}

3、bookEdit界面: 

4、实现类Demo1.jsp:

    <h3>struts方法调用 </h3> 
	<a href="${pageContext.request.contextPath }/sy/demo1_add.action">新增</a><br>
		<a href="${pageContext.request.contextPath }/sy/demo1_del.action">删除</a>	<br>
		<a href="${pageContext.request.contextPath }/sy/demo1_edit.action">修改</a><br>

5.运行结果:

运行成功: 

 

四、struts的传参的三种方式:

        三种方式:

                       1、Modeldriven传参

                       2、set方式传参:

                       3、根据对象属性传参:

1、Modeldriven传参:在子控制类写好实现modeldriven类的代码:

实体类:

package com.zking.one.entity;

public class User {
	private String uid;
	private String uname;

	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;
	}

	public User() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public String toString() {
		return "User [uid=" + uid + ", uname=" + uname + "]";
	}

	public User(String uid, String uname) {
		super();
		this.uid = uid;
		this.uname = uname;
	}

}

demo1.jsp:

 <h3>struts传参方式 </h3>
	    	<a href="${pageContext.request.contextPath }/sy/demo1_list.action?uid=001&&uname=zs">Modeldriven传参</a><br>
		<a href="${pageContext.request.contextPath }/sy/demo1_list.action?sex=nv">通过set方法传参</a>	<br>
		<a href="${pageContext.request.contextPath }/sy/demo1_list.action?user2.uid=002&&user2.uname=ls">通过对象属性</a><br>
	     

Demo1Action:

public String list() throws Exception {
		System.out.println("list方法");
		System.out.println(user1);

 运行效果:

 2、set方式传参:User中没有sex这个属性,那么就独自在action中写一个sex,生成get和set方法

Demo1Action:

demo1:

		<a href="${pageContext.request.contextPath }/sy/demo1_list.action?sex=nv">通过set方法传参</a>	<br>

 运行效果:

3、根据对象属性传参:同时在Demo1Action中定义一个user叫做user2并且写好user1和user2的get和set方法,但是并没有new,同时也能够运行出效果:

Demo1Action:

demo1:

		<a href="${pageContext.request.contextPath }/sy/demo1_list.action?user2.uid=002&&user2.uname=ls">通过对象属性</a><br>

运行结果:

五:struts与tomcat的集成(合作)今天写struts项目的目的就是要进行测试:

        1、两种方式:

                            1、直接定义ServletActionContext.getRequest()进行集成

                            2、在Demo1Action类中实现ServletRequestAware ,ServletResponseAware两个接口进行集成。

        2、直接定义ServletActionContext.getRequest()进行集成:

Demo1Action:

HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("age", 20);

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 }

运行结果:

        3、在Demo1Action类中实现ServletRequestAware ,ServletResponseAware两个接口进行集成:

在Demo1Action:

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

并且重写setServletRequest和setServletResponse方法:

运行结果:

运行成功:

 总结:struts框架和自定义MVC相比起来,struts框架用起来更加方便,在今天分享的   知识中,第二点struts的动态调用方法更加的新颖,其中struts框架的传参方式比自定义MVC更加丰富,自此可见struts框架的强大之处。今天的知识就分享到这里了。希望对大家有帮助,有疏忽之处还请大神多加指点!​​​​​​​

标签:传参,Struts,String,框架,struts,uname,SSH,public,自定义
来源: https://blog.csdn.net/m0_53151031/article/details/120749839

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有