eclipse学习(第二章:初识ssh)——22.struts整合spring

写在最前面的话

本文参考自以下网站,做的一个日志记录
https://www.w3cschool.cn/struts_2/struts_spring.html
单个框架或者说单个组件真的不难,合起来是真的很难很难,因为有可能出现版本问题以及相关的依赖问题。其实本质就是依赖问题,他们用的依赖可能会发生版本方面的差距导致无法正常启动。(当然和你的开发环境也有关系,基本是就是版本和依赖(jar包)和环境这三个吧)

相关jar包请到该网站下载,下载一个all版本吧
https://struts.apache.org/download.cgi

查看一下struts里面的lib文件夹

可以看到这里面已经有跟spring相关联的jar包了,spring开头的必定要拉取,然后struts跟spring联系起来的一个包struts2-spring-plugin-2.3.37.jar也要拉上,然后加上之前struts的jar就可以啦。当然如果你不嫌麻烦其实全部弄进去那也算是整合了,其实,不过我这里要说明一下。
在这里插入图片描述

项目初始化及jar包拉取

在这里插入图片描述

修改web.xml

这里要做一个处理设置一下,加载上下文的路径位置,当然也可以不设置,但是我觉得设置一下会好看一点

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>ssh_learn_spring_integration</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
     
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
  
<!--   默认情况下,会加载WEB-INF/applicationContext.xml这个文件,我们可以通过配置contextConfigLocation参数改变配置文件的路径 -->
  <context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>WEB-INF/applicationContext.xml</param-value>
  </context-param>
  
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

创建SpringAction

SpringAction

package com.czx.spring.action;

public class SpringAction {

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getRole() {
		return role;
	}

	public void setRole(String role) {
		this.role = role;
	}

	private String name;
	
	private String role;
	
	public String execute() {
		return "success";
	}
}

创建applicationContext.xml

这里是注入一个方法

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd">
   <beans>
   	<bean id = "helloWorld" class="com.czx.spring.action.SpringAction">
   		<property name="name" value="陈某"></property>
   		<property name="role" value="管理员"></property>
   	</bean>

   </beans>

创建userTest.jsp

这个是跳转后页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>进入页面</title>
</head>
<body>
	尝试进入页面
	<s:form>
		<s:textfield name="name" label="名称"></s:textfield>
		<s:textfield name="role" label="角色"></s:textfield>
	</s:form>
</body>
</html>

创建struts.xml

核心在于这里的action内的属性class使用的是之前设定的bean名称

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<constant name="struts.devMode" value="true"></constant>
	<package name="springTest" extends="struts-default">
		<action name="hi" class="helloWorld" method="execute">
			<result name="success">/userTest.jsp</result>
		</action>
	</package>
</struts>

测试

访问http://localhost:8080/ssh_learn_spring_integration/hi
结果如下,这里值获取到了
在这里插入图片描述

中间遇到的异常

整合spring出现了Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener

这是因为我写错了applicationContext.xml的名字,导致一直找不到这个类的实例。

Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name struts has already been loaded by bean

这里说我的已经被加载过了,所以我把注入容器的类改个名称试试,发现不行估计是jar包问题出现了重复加载。
struts2-core-2.3.37.jar和struts2-core-2.3.24.jar冲突了

找不到对应的方法

后面查看发现访问修饰符不小心写成了private,写成public就好了

项目地址

这个仓库里面的ssh_learn_spring_integration
https://gitee.com/mrchen13427566118/ssh_learn.git

如果不会怎么弄到eclipse的话,就看这里
https://blog.csdn.net/weixin_43987277/article/details/116936221

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值