通过JSTL调用Spring里的bean

Spring提供了一个WebApplicationObjectSupport类来供我们使用,用来把定义在spring中的对象与前台页面联系起来。

为了在页面中可以方便的通过EL表达式取出spring里的bean,我们需要借助HashMap的特性并重写其方法。

 

首先,需要一个继承WebApplicationObjectSupport的类,并重写其initApplicationContext()方法,并把该类配置在Spring中,且lazy-init=false,自动加载。

该类的主要作用就是把一重写了get方法的HashMap以"springctx"的名字存放着ServletContext中,在页面通过类似于"${springctx.xxxxx}"就可以调用到spring里的bean。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我是一个语言模型AI,无法提供完整的代码。但我可以给你提供一个简单的 Maven 项目示例,你可以根据自己的需求进行修改和完善。 1. 创建 Maven 项目,添加所需的依赖 在 pom.xml 文件中添加以下依赖: ```xml <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- MySQL 数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- CXF --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>${cxf.version}</version> </dependency> <!-- JSTL 标签库 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies> <!-- 版本号 --> <properties> <spring.version>5.1.9.RELEASE</spring.version> <mybatis.version>3.5.2</mybatis.version> <mysql.version>8.0.17</mysql.version> <cxf.version>3.2.6</cxf.version> </properties> ``` 2. 配置 Spring 配置文件 在 src/main/resources 目录下创建 spring-config.xml 文件,配置 MySQL 数据源和 MyBatis 的配置、事务管理器的配置、CXF 的配置等。 ```xml <!-- 数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC" /> <property name="username" value="root" /> <property name="password" value="123456" /> </bean> <!-- MyBatis 配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis-config.xml" /> </bean> <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper" /> </bean> <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- CXF 配置 --> <jaxws:endpoint id="userService" implementor="com.example.service.UserService" address="/user" /> <jaxws:client id="userClient" serviceClass="com.example.service.UserService" address="http://localhost:8080/user" /> <!-- 开启注解支持 --> <context:annotation-config /> <mvc:annotation-driven /> <tx:annotation-driven /> ``` 3. 创建实体类和相应的 Mapper 接口 在 src/main/java 目录下创建 User 实体类和 UserMapper 接口。 User.java ```java public class User { private Integer id; private String name; private Integer age; // 省略 getter 和 setter 方法 } ``` UserMapper.java ```java public interface UserMapper { User getUserById(Integer id); List<User> getAllUsers(); void addUser(User user); void updateUser(User user); void deleteUser(Integer id); } ``` 4. 创建 Service 层 在 src/main/java 目录下创建 UserService 接口和 UserServiceImpl 实现类,调用 Mapper 层的方法进行数据操作。 UserService.java ```java public interface UserService { User getUserById(Integer id); List<User> getAllUsers(); void addUser(User user); void updateUser(User user); void deleteUser(Integer id); } ``` UserServiceImpl.java ```java @Service @Transactional public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUserById(Integer id) { return userMapper.getUserById(id); } @Override public List<User> getAllUsers() { return userMapper.getAllUsers(); } @Override public void addUser(User user) { userMapper.addUser(user); } @Override public void updateUser(User user) { userMapper.updateUser(user); } @Override public void deleteUser(Integer id) { userMapper.deleteUser(id); } } ``` 5. 创建 Controller 层 在 src/main/java 目录下创建 UserController 类,使用 SpringMVC 实现请求的映射和响应的处理。 UserController.java ```java @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping("/get") @ResponseBody public User getUserById(@RequestParam("id") Integer id) { return userService.getUserById(id); } @RequestMapping("/add") @ResponseBody public String addUser(@RequestBody User user) { userService.addUser(user); return "success"; } // 省略其他方法 } ``` 6. 配置 CXF 的服务端和客户端 在 spring-config.xml 中已经配置了 CXF 的服务端和客户端。 7. 创建 JSP 页面 在 src/main/webapp 目录下创建 index.jsp 页面,使用 JSTL 标签库和 EL 表达式实现页面的渲染。 index.jsp ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>User List</title> </head> <body> <table border="1"> <tr> <th>ID</th> <th>Name</th> <th>Age</th> </tr> <c:forEach items="${userList}" var="user"> <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.age}</td> </tr> </c:forEach> </table> </body> </html> ``` 8. 部署项目到 Web 容器中 将项目打包成 war 包,部署到 Tomcat 等 Web 容器中,访问 index.jsp 页面,测试项目是否正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值