这一章讲spring和struts2的整合
一、为项目添加struts2的功能
添加后出现struts配置文件(等一下会配置):
二、修改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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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>SpringHibernateStruts</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 服务器启动时,通过监听器初始化Spring的配置环境
监听器,默认加载文件是:/WEB-INF/applicationContext.xml
-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 用于指定Spring的配置文件路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- struts2框架的核心调度器 -->
<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>*.action</url-pattern>
</filter-mapping>
</web-app>
我们需要修改filter节点中的filter-class为:
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
Web.xml配置完成。
三、修改struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 将action托管给spring -->
<constant name="struts.objectFactory" value="spring" />
<package name="default" namespace="/" extends="struts-default">
<!-- 此处action对应的类名应为Bean的名称 -->
<action name="login" class="provinceAction">
<!-- 定义逻辑视图和物理资源之间的映射 -->
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
四、新建action类
package demo.action;
import java.util.List;
import demo.dao.ProvinceDao;
import demo.pojo.Province;
public class ProvinceAction {
private ProvinceDao dao;
public void setDao(ProvinceDao dao) {
this.dao = dao;
}
public String execute(){
List<Province> list = dao.find(new Province(), 1, 10);
for (Province p : list) {
System.out.println(p.getProvinceId()+":"+p.getProvince());
}
return "success";
}
}
五、applicationContext.xml文件中配置要注入的bean
<bean name="provinceAction" class="demo.action.ProvinceAction">
<property name="dao" ref="provinceDao"></property>
</bean>
六、访问网站http://localhost:8080/SpringHibernateStruts/login.action,查看是否能拿到值
结果是:
控制台有显示数据,说明我们的整合成功了,接下来就是去页面呈现数据了
七、修改ProvinceAction类
package demo.action;
import java.util.List;
import demo.dao.ProvinceDao;
import demo.pojo.Province;
public class ProvinceAction {
private List<Province> list;
private ProvinceDao dao;
public void setDao(ProvinceDao dao) {
this.dao = dao;
}
public List<Province> getList() {
return list;
}
public String execute(){
list = dao.find(new Province(), 1, 10);
for (Province p : list) {
System.out.println(p.getProvinceId()+":"+p.getProvince());
}
return "success";
}
}
新建一个success.jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'success.jsp' starting page</title>
</head>
<body>
<ul>
<c:forEach items="${list }" var="obj">
<li>${obj.province }</li>
</c:forEach>
</ul>
</body>
</html>
输入网址,结果如下:
到此,框架的整合基本完毕,还有很多功能没有加入,需要我们根据实际的情况,不断完善配置文件,使其功能越来越强大。