spring整合struts2 以及 会遇到的问题

导入jar包
导入spring的jar包时可能会报jarweb冲突的错误,可以删除.jar以外的javaweb的jar包。
导入struts2-blank中所有包即可
要整合spring和struts需要另外加一个jar包
Struts 2 Spring Plugin » 2.3.34
注意,不是所有的struts2-spring-plugin:jar都可以,要选择合适的,不然可能会报错。
struts.xml

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<!-- 配置了系列常量 -->
	<constant name="struts.i18n.encoding" value="GBK"/>
	<constant name="struts.devMode" value="true"/>
	<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
	<package name="default" namespace="/" extends="struts-default">
		<action name="login" class="loginAction">
			<!-- 为两个逻辑视图配置视图页面 -->
			<result name="error">/error.jsp</result>
			<result>/welcome.jsp</result>
		</action>
		<action name="index">
			<result>/loginForm.jsp</result>
		</action>
	</package>
</struts>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

	<bean id="myService" class="com.atliin.test.MyServiceImpl"/>
	<bean id="loginAction" class="com.atliin.test.LoginAction" scope="prototype" p:ms-ref="myService"/> 
</beans>

LoginAction

package com.atlin.test;


import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport
{
	// 下面是用于封装用户请求参数的两个成员变量
	private String username;
	private String password;
	// 系统所用的业务逻辑组件
	private MyService ms;
	// 设值注入业务逻辑组件所必需的setter方法
	public void setMs(MyService ms)
	{
		this.ms = ms;
	}
	// username的setter和getter方法
	public void setUsername(String username)
	{
		this.username = username;
	}
	public String getUsername()
	{
		return this.username;
	}
	// password的setter和getter方法
	public void setPassword(String password)
	{
		this.password = password;
	}
	public String getPassword()
	{
		return this.password;
	}
 
	// 处理用户请求的execute方法
	public String execute() throws Exception
	{
		// 调用业务逻辑组件的validLogin()方法
		// 验证用户输入的用户名和密码是否正确
		if (ms.validLogin(getUsername(), getPassword()) > 0)
		{
			addActionMessage("哈哈,整合成功!");
			return SUCCESS;
		}
		return ERROR;
	}
}

Myservice

package com.atlin.test;

public interface MyService {
	int validLogin(String username , String pass);
}

MyserviceImpl

package com.atlin.test;

public class MyServiceImpl implements MyService
{
	public int validLogin(String username , String pass)
	{
		// 此处只是简单示范,故直接判断用户名、密码是否符合要求
		if ( username.equals("admin")
			&& pass.equals("123456") )
		{
			return 99;
		}
		return -1;
	}
}

loginForm.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE >
<html >
<head>
	<title>登录页面</title>
</head>
<body>
<h3>用户登录</h3>
<form action="login">
	<input name="username" />
	<input name="password"/>
	<input type="submit"/>
</form>
</body>
</html>

error.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE>
<html>
<head>
	<title>错误页面</title>
</head>
<body>
	您不能登录!
</body>
</html>

welcome.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE>
<html>
<head>
	<title>成功页面</title>
</head>
<body>
	您已经登录!<br/>
</body>
</html>

补充一个web.xml
一定要注意web.xml是否正确,我在这里被坑了很多次

<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
	<!-- 使用ContextLoaderListener初始化Spring容器 -->
	  <listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>   
    </listener>
	<context-param> 
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	<!-- 定义Struts 2的FilterDispathcer的Filter -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<!-- FilterDispatcher用来初始化Struts 2并且处理所有的WEB请求。 -->
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

推荐一个很好的提供jar包和maven的网站
点击进入
总结:
使用框架需要细心,配置环境不要怕麻烦,一步一步的跟着配置会遇到问题,但是配置好以后再次使用就很方便了,难的都是第一次。不过一般这种框架使用,错误的原因几乎都是jar包版本不合适。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值