本文主要是介绍摸爬滚打-由原始servlet过渡到SSM整合(无maven),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因为刚学完SSM,有点生疏,想要通过写教程来加强理解,也方便以后复习,该教程如果有错,请指正
整合过程
- SSM是什么?
- SSM整合准备步骤
- 整合环境
- 准备jar包
- 工程目录
- 准备配置文件
- mybatis-config.mxl
- applicationContext.mxl
- springmvc.xml
- db.properties
- log4j.properties
- web.xml
- SSM测试
- mybatis测试
- 准备jar包
- 准备mybatis配置文件
- 创建文件
- AccountSeller.java
- AccountSeller.xml
- AccountSellerMapper.java
- 测试CRUD
- 结果
- 增加
- 查询所有
- 查询单个
- 修改
- 删除
- springmv
- 准备相关配置文件
- 创建文件
- AccountSellerController.java
- index.jsp
- list.jsp
- 测试能否正常访问
- spring整合springmvc和mybatis
- 创建文件
- AccountSellerController.java
- AccountSellerService.java
- AccountSellerMapper.java(不需要更改)
- index.jsp(不需要更改)
- list.jsp
- 测试能否查询到数据库中的账号
- 结语
SSM是什么?
在整合之前我们先了解一下SSM是什么,能干什么。
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
- Spring:就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地
new
一个对象,而是让Spring框架帮你来完成这一切。 - SpringMVC:在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
- mybatis:是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
- Java Web程序分三层架构,分别是视图层、业务层、持久层,SSM中的Spring对应着业务层,SpringMVC对应视图层,Mybatis对应持久层。
以上是百度百科对SSM的介绍,小白刚学的时候看得是一头雾水,但是随着后面的深入学习之后有了自己的一点点理解。
- Spring:在学习Spring之前,service层需要对数据库操作的事务管理,原始版本需要对service层中的方法进行对事务的提交、回滚、异常操作,需要用到动态代理或其他方法,工作量大、可维护性较差,而Spring的AOP就解决了这些问题,让小白可以快速完成service层的开发,还可以把service层中可以使用单例设计模式的对象交给Spring来管理(IOC)。
- SpringMVC:springmvc相当于servlet,但是springmvc只被一个servlet管理,可以把对服务器的访问请求给拦截下来,再到controller层中相应的方法(每个方法都绑定着一个地址,请求url=绑定的地址就会调用),springmvc只管接收请求和响应请求,其他事它可不管。
- Mybatis:与Hibernate一样都是持久层的框架,但是Mybatis的优势在于可以自由编写sql,在想要通过sql优化数据库运行效率的时候,Mybatis可以让擅长数据库的大牛玩出花来。还有就是用Mybatis使用xml来管理的,所以只需要把大部分精力放在xml文件上,不需要花太多的精力在其他方面上。
SSM整合准备步骤
整合环境
spring5.2.2 + mybatis 3.5.2
准备jar包
不需要积分的SSM整合包下载链接(已包含测试需要的jar包):SSM整合包
工程目录
包名 | 作用 |
---|---|
com.ssm.controller | 对应着原始web写法中的servlet,也是springmvc发挥作用的包 |
com.ssm.service | 业务层,存放着业务逻辑的类 |
com.ssm.dao | 持久层,存放着mapper接口(用于使用mapper代理)和对应的xml文件 |
com.ssm.entity | 存放实体类的包 |
conf | 存放配置文件的文件夹 |
准备配置文件
mybatis-config.mxl
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration></configuration>
applicationContext.mxl
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:jdbc="http://www.springframework.org/schema/jdbc"xmlns:context="http://www.springframework.org/schema/context"xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd"><!-- 配置spring --><!-- 扫描service --><context:component-scan base-package="com.ssm"><!-- 过滤掉springmvc的注解,否则会对controller包中的类加载两次 --><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- 创建事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 通知 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 设置传播行为 --><tx:method name="update*" propagation="REQUIRED"/><tx:method name="select*" propagation="SUPPORTS" read-only="true"/></tx:attributes></tx:advice><!-- 配置aop --><aop:config><aop:advisor advice-ref="txAdvice" pointcut="execution (* com.ssm.service.*.*(..))"/></aop:config><!-- spring整合mybatis --><!-- 引入properties文件 --><context:property-placeholder location="classpath:db.properties"/><!-- 配置连接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}"></property><property name="jdbcUrl" value="${jdbc.url}"></property><property name="user" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property><!-- c3p0连接池的私有属性 --><property name="maxPoolSize" value="30" /><property name="minPoolSize" value="10" /><!-- 关闭连接后不自动commit --><property name="autoCommitOnClose" value="false" /><!-- 获取连接超时时间 --><property name="checkoutTimeout" value="10000" /><!-- 当获取连接失败重试次数 --><property name="acquireRetryAttempts" value="2" /></bean><!-- 配置SqlSessionFactory工厂对象 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 注入连接池 --><property name="dataSource" ref="dataSource"></property><!-- 使用mybatis核心配置文件 --><property name="configLocation" value="classpath:mybatis-config.xml"></property><!-- 使用别名 --><property name="typeAliasesPackage" value="com.ssm.entity"></property></bean><!-- 配置mapper扫描包,创建mapper代理对象 --><bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.ssm.dao"></property></bean>
</beans>
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><!-- 在web.xml中配置前端控制器 --><!-- 开启springmvc注解支持,创建处理器映射器和处理器适配器 --><mvc:annotation-driven /><!-- 静态资源配置 --><mvc:default-servlet-handler/><!-- 配置视图解析器 --><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean><!-- 配置springmvc需要扫描的controller --><context:component-scan base-package="com.ssm.controller"/>
</beans>
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmintergration?useUnicode/=true&characterEncoding/=utf-8&useSSL=false
jdbc.username=root
jdbc.password=
log4j.properties
# Rules reminder:
# DEBUG < INFO < WARN < ERROR < FATAL# Global logging configuration
log4j.rootLogger=DEBUG, stdout# My logging configuration...
log4j.logger.org.mybatis.jpetstore=TRACE
log4j.logger.org.mybatis.spring=TRACE## Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%r [%t] %-5p %c %x - %m%n
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd"><display-name></display-name><!-- 解决中文乱码 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceRequestEncoding</param-name><param-value>true</param-value></init-param><init-param><param-name>forceResponseEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 配置spring文件信息 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 让服务器启动时加载spring容器,需要用到监听器来加载spring文件 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 配置前端控制器 --><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 加载springmvc配置文件 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>
SSM整合完成
如果整合中有错误的地方,求大神指点指点。希望该整合可以帮到从原始web过渡到SSM的你,后面会持续更新整合测试。
SSM测试
在进行SSM整合测试需要先保证springmvc和mybatis都能独立运行,然后再通过spring进行整合。
mybatis测试
下面我准备创建一个商家的数据库来进行CURD测试。
CREATE DATABASE ssmintergration
CREATE TABLE `account_seller` (`seller_id` int(11) NOT NULL AUTO_INCREMENT,`seller_account` varchar(255) DEFAULT NULL,`seller_password` varchar(255) DEFAULT NULL,`last_time_login` datetime DEFAULT NULL,`logon_date` datetime DEFAULT NULL,`is_enable` tinyint(1) DEFAULT NULL,PRIMARY KEY (`seller_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
准备jar包
将该jar包添加到 /WEB-INF/lib 里面。
准备mybatis配置文件
这里我不使用逆向工程,有助于锻炼开发能力。以下我准备用我平常开发时会用到的思路来写(让每件事的逻辑看起来都可以连上)。
创建文件
首先需要mybatis的必备文件,mapper映射文件和mapper接口。
在这之前需要先准备与数据库的表一致的 实体类。
AccountSeller.java
package com.ssm.entity;import java.util.Date;public class AccountSeller {private Integer sellerId;private String sellerAccount;private String sellerPassword;private Date lastTimeLogin;private Date logonDate;private Boolean isEnable;public Integer getSellerId() {return sellerId;}public void setSellerId(Integer sellerId) {this.sellerId = sellerId;}public String getSellerAccount() {return sellerAccount;}public void setSellerAccount(String sellerAccount) {this.sellerAccount = sellerAccount == null ? null : sellerAccount.trim();}public String getSellerPassword() {return sellerPassword;}public void setSellerPassword(String sellerPassword) {this.sellerPassword = sellerPassword == null ? null : sellerPassword.trim();}public Date getLastTimeLogin() {return lastTimeLogin;}public void setLastTimeLogin(Date lastTimeLogin) {this.lastTimeLogin = lastTimeLogin;}public Date getLogonDate() {return logonDate;}public void setLogonDate(Date logonDate) {this.logonDate = logonDate;}public Boolean getIsEnable() {return isEnable;public void setIsEnable(Boolean isEnable) {this.isEnable = isEnable;}
}
写好了实体类,随后是准备mybatis的必备文件,mapper映射文件和mapper接口。书写顺序看个人喜好。
这里提一下使用mapper代理对象的开发规范:
- mapper.xml 中的 namespace 等于 mapper接口 地址(全限定类名)。
- mapper接口 中的方法名要和 mapper.xml 中的 statement 的 id 一致。
- mapper接口 中的参数要是 mapper.xml 中的 parameterType 指定的类型一致。
- mapper接口 中的方法返回值要和 mapper.xml 中的 resultType 指定类型一致。
AccountSeller.xml
因为实体类的属性采用的是驼峰命名,所以和数据库中的字段不一致,需要使用resultMap来进行高级映射。
在这提一下 resultMap 的使用场景:
- 如果查询出来的 字段名 和 pojo的属性名 不一致,就要通过定义一个 resultMap 来对 列名 和 pojo属性名 之间作一个映射关系。具体写法请看代码。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ssm.dao.AccountSellerMapper"><!-- 配置高级映射关系 --><resultMap type="com.ssm.entity.AccountSeller" id="BaseResultMap"><!-- id:表示查询结果集中的唯一标识column:表示查询结果集中的字段名property:表示要映射到type指定的pojo中的属性名 最终resultMap会对column和property作映射关系(对应关系) --><id column="seller_id" property="sellerId" /><result column="seller_account" property="sellerAccount" /><result column="seller_password" property="sellerPassword" /><result column="last_time_login" property="lastTimeLogin" /><result column="logon_date" property="logonDate" /><result column="is_enable" property="isEnable" /></resultMap><!-- CRUD --><!-- 编写底层封装对象mapped statement:insert,无返回值 --><insert id="insert" parameterType="com.ssm.entity.AccountSeller">insertaccount_seller(seller_id, seller_account, seller_password,last_time_login, logon_date, is_enable)values (#{sellerId}, #{sellerAccount}, #{sellerPassword}, #{lastTimeLogin}, #{logonDate}, #{isEnable})</insert><delete id="delete" parameterType="java.lang.Integer">delete from account_seller where seller_id = #{sellerId}</delete><!-- 该setement对应的方法的返回值是resultMap中的type指定的类型 --><select id="selectById" parameterType="java.lang.Integer" resultMap="BaseResultMap">select * from account_seller where seller_id = #{sellerId}</select><select id="selectAll" resultMap="BaseResultMap">select * from account_seller</select><update id="updateById" parameterType="com.ssm.entity.AccountSeller">update account_seller set seller_account = #{sellerAccount},seller_password = #{sellerPassword}, last_time_login = #{lastTimeLogin},logon_date = #{logonDate},is_enable = #{isEnable}where seller_id = #{sellerId}</update></mapper>
AccountSellerMapper.java
package com.ssm.dao;import com.ssm.entity.AccountSeller;
import java.util.List;public interface AccountSellerMapper {/*** 添加商家账号* @param accountSeller* @return*/int insert(AccountSeller accountSeller);/*** 根据id删除商家账号* @param sellerId* @return*/int delete(Integer sellerId);/*** 根据id查询商家* @param sellerId* @return*/AccountSeller selectById(Integer sellerId);/*** 查询所有商家账户* @return*/List<AccountSeller> selectAll();/*** 根据id修改商家账号* @param accountSeller* @return*/int updateById(AccountSeller accountSeller);
}
测试CRUD
package com.ssm.test;import java.util.Date;
import java.util.List;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.ssm.dao.AccountSellerMapper;
import com.ssm.entity.AccountSeller;@RunWith(SpringJUnit4ClassRunner.class)//使用spring提供的测试类
@ContextConfiguration(locations="classpath:applicationContext.xml")//告诉spring配置文件的位置在哪
public class AccountSellerTest {@AutowiredAccountSellerMapper asm;@Testpublic void test1(){//1. 创建商家账号AccountSeller as = new AccountSeller();as.setSellerAccount("bbb");as.setSellerPassword("222");as.setLogonDate(new Date());as.setLastTimeLogin(new Date());as.setIsEnable(true);//2. 进行insert操作asm.insert(as);//3. 查询所有List<AccountSeller> list = asm.selectAll();System.out.println("list=========>" + list.toArray());//4. 查询单个AccountSeller as2 = list.get(1);System.out.println("单个查询==============>" + asm.selectById(as2.getSellerId()));//5. 更改as2.setSellerPassword("66666666");as2.setSellerAccount("abababababababab");asm.updateById(as2);System.out.println(as2.toString());//6. 删除asm.delete(as2.getSellerId());//再次查询所有,看看有没有账号为abababababababab的商家账号List<AccountSeller> list2 = asm.selectAll();System.out.println(list2.toArray());}
}
结果
增加
这里可以看到刚刚添加的已经成功。
查询所有
查询成功。这里显示有2条数据,第一条是我之前添加的。
查询单个
查询单个成功。
修改
根据id修改成功。
删除
根据id删除id为2的记录,删除成功。
到这里spring整合mybatis就完成了。后续是测试springmvc能否正常访问,以及controller中的方法能否调用service中的方法
springmv
在这里准备先测试springmvc
准备相关配置文件
创建文件
AccountSellerController.java
package com.ssm.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import com.ssm.entity.AccountSeller;
import com.ssm.service.AccountSellerService;@Controller
@RequestMapping("/accountSeller")
public class AccountSellerController {@Autowiredprivate AccountSellerService accountSellerService;@RequestMapping("/selectAll")public String selectAll() {System.out.println("selectAll运行。。。。。");return "list";}
}
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><a href="accountSeller/selectAll">测试</a>
</html>
list.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'list.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><h3>测试成功</h3></body>
</html>
测试能否正常访问
控制台成功输出。
成功跳转。
spring整合springmvc和mybatis
在前面的测试中,springmvc和mybatis可以独立运行,现在是时候对它们进行整合了。
创建文件
AccountSellerController.java
package com.ssm.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import com.ssm.entity.AccountSeller;
import com.ssm.service.AccountSellerService;@Controller
@RequestMapping("/accountSeller")
public class AccountSellerController {@Autowiredprivate AccountSellerService accountSellerService;@RequestMapping("/selectAll")public String selectAll(Model model) {model.addAttribute("list", accountSellerService.selectAll());return "list";}
}
AccountSellerService.java
把AccountSellerMapper.java中的方法全部挪到service层中。
package com.ssm.service;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.ssm.dao.AccountSellerMapper;
import com.ssm.entity.AccountSeller;@Service
public class AccountSellerService {@Autowiredprivate AccountSellerMapper accountSellerMapper;/*** 添加账户* @param accountSeller* @return*/public int insert(AccountSeller accountSeller){return accountSellerMapper.insert(accountSeller);}/*** 根据id查询账户* @param sellerId* @return*/public AccountSeller selectById(Integer sellerId) {return accountSellerMapper.selectById(sellerId);}/*** 查询所有账户* @return*/public List<AccountSeller> selectAll(){return accountSellerMapper.selectAll();}/*** 根据id修改账户,AccountSeller对象中必须有id* @param accountSeller* @return*/public int updateById(AccountSeller accountSeller) {return accountSellerMapper.updateById(accountSeller);}/*** 根据id删除账户* @param sellerId* @return*/public int delete(Integer sellerId){return accountSellerMapper.delete(sellerId);}
}
AccountSellerMapper.java(不需要更改)
index.jsp(不需要更改)
list.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'list.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><c:forEach items="${list }" var="accountSeller">${accountSeller.sellerId },${accountSeller.sellerAccount }</c:forEach><h3>测试成功</h3></body>
</html>
测试能否查询到数据库中的账号
在此展示查询所有账户的方法,其他的方法就不一一展示了。
结语
至此,SSM整合已全部完成。该教程是我学完SSM之后写的教程,在写的过程中一步一步巩固所学到的技术,一点一点改进,所以该教程可能不是最好的,但是适合刚学完用servlet来做项目的同学。如本教程有错漏的地方,请大神指出,谢谢。
这篇关于摸爬滚打-由原始servlet过渡到SSM整合(无maven)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!