编程小白根据自己对Java学习的理解,基于SSM框架写的小案例。目录如下
一、首先我们搭建项目环境,
1、创建maven下的一个web-app项目
2、引入项目所需要的maven依赖
<!--spring框架相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.24</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.24</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.24</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<!--mysql数据库依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!--mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--druid数据库连接池依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.14</version>
</dependency>
<!--mybatis和spring整合依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<!--lombok插件依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<!--jstl依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
3、在resources包下创建db.properties文件用于存储连接数据库相关的信息,以及数据库连接池的配置
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
jdbc.username=mysql数据库用户名
jdbc.password=mysql数据库密码
druid.initialSize=10
druid.maxActive=100
druid.minIdle=10
druid.maxWait=1000
4、创建配置类
(1)RootConfig核心配置类
@Configuration
@PropertySource("classpath:db.properties")
@ComponentScan("com.yang.service")
@MapperScan("com.yang.dao")
public class RootConfig {
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Value("${druid.initialSize}")
private Integer initialSize;
@Value("${druid.maxActive}")
private Integer maxActive;
@Value("${druid.minIdle}")
private Integer minIdle;
@Value("${druid.maxWait}")
private Long maxWait;
@Bean
public DataSource dataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driverClassName);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
druidDataSource.setInitialSize(initialSize);
druidDataSource.setMaxActive(maxActive);
druidDataSource.setMinIdle(minIdle);
druidDataSource.setMaxWait(maxWait);
return druidDataSource;
}
@Bean
@Autowired
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
//创建Mybatis的配置器对象
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
//设置日志实现
configuration.setLogImpl(StdOutImpl.class);
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean.getObject();
}
@Bean
@Autowired
public TransactionManager transactionManager(DataSource dataSource){
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(dataSource);
return dataSourceTransactionManager;
}
}
(2)MVCConfig配置类
@Configuration
@EnableWebMvc
@ComponentScan("com.yang.controller")
public class MVCConfig implements WebMvcConfigurer {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();//放行静态资源
}
}
(3)SpringMVCInit初始化类
public class SpringMVCInit extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{MVCConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
到此我们项目的整体框架就搭建完成了,下面就是业务的实现。
1、数据库的创建,2、根据数据库的字段来创建实体类,3、持久层,4、业务层,5、控制层
6、前端页面展示
二、创建数据库
三、根据数据库的字段来创建实体类Goods
@Data//lombok的注解自动生成实体类中的相关方法
public class Goods {
private Integer goods_id;
private String goods_name;
private Float goods_price;
private String date;
}
四、持久层,创建GoodsDao接口
@Repository
public interface GoodsDao {
@Select("select * from goods")
List<Goods> queryGoods();
@Insert("insert into goods values(null,#{goods_name},#{goods_price},#{date})")
void addGoods(Goods goods);
@Select("select * from goods where goods_id=#{goods_id}")
Goods SelectById(Integer goods_id);
@Update("update goods set goods_name=#{goods_name},goods_price=#{goods_price},date=#{date} where goods_id=#{goods_id}")
void update(Goods goods);
@Delete("delete from goods where goods_id=#{goods_id}")
void DeleteById(Integer goods_id);
}
五、业务层,创建GoodsService接口和GoodsServiceImpl实现类
public interface GoodsService {
List<Goods> queryGoods();
void addGoods(Goods goods);
Goods SelectById(Integer goods_id);
void DeleteById(Integer goods_id);
}
@Service
public class GoodsServiceImpl implements GoodsService {
@Autowired
private GoodsDao goodsDao;
@Override
public List<Goods> queryGoods() {
return goodsDao.queryGoods();
}
@Override
public void addGoods(Goods goods) {
System.out.println(goods.getGoods_id());
if (goods.getGoods_id()==null){
goodsDao.addGoods(goods);
}else {
goodsDao.update(goods);
}
}
@Override
public Goods SelectById(Integer goods_id) {
return goodsDao.SelectById(goods_id);
}
@Override
public void DeleteById(Integer goods_id) {
goodsDao.DeleteById(goods_id);
}
}
六、控制层,创建GoodsController控制器
@Controller
@RequestMapping("/goods")
public class GoodsController {
@Autowired
private GoodsService goodsService;
@RequestMapping("/select")
public String select(Model model){
model.addAttribute("goodsList",goodsService.queryGoods());
return "/list.jsp";
}
@RequestMapping("/add")
public String add(Goods goods){
System.out.println(goods.getGoods_name());
goodsService.addGoods(goods);
return "/index.jsp";
}
@RequestMapping("/SelectById")
public String SelectById(Integer goods_id,Model model){
model.addAttribute("goods",goodsService.SelectById(goods_id));
return "/add.jsp";
}
@RequestMapping("/DeleteById")
public String DeleteById(Integer goods_id){
goodsService.DeleteById(goods_id);
return "/index.jsp";
}
}
七、创建一个过滤器,对请求进行编码设置
@WebFilter("/*")
public class CharsetFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
chain.doFilter(request,response);
}
@Override
public void destroy() {
}
}
八、前端页面的实现JSP
index.jsp——在服务器启动后会自动运行index.jsp页面,在该页面使用重定向到查询商品列表控制器,获得数据数据并且在list.jsp页面上展示,
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
response.sendRedirect("/goods/select");
%>
list.jsp——商品列表页面,获得服务器回传的数据并且在页面上展示
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta charset="UTF-8">
<title>商品信息</title>
</head>
<body>
<table id="table" border="1" cellpadding="10" width="60%" cellspacing="3" style="text-align: center;margin: 0 auto;">
<thead>
<tr>
<td>商品编号</td>
<td>商品名称</td>
<td>商品单价</td>
<td>上架时间</td>
<td><a href="/add.jsp">添加商品</a></td>
</tr>
</thead>
<c:forEach var="goods" items="${goodsList}">
<tbody>
<tr>
<td>${goods.goods_id}</td>
<td>${goods.goods_name}</td>
<td>${goods.goods_price}</td>
<td>${goods.date}</td>
<td><a href="/goods/SelectById?goods_id=${goods.goods_id}">修改</a>
<a href="/goods/DeleteById?goods_id=${goods.goods_id}">删除</a>
</td>
</tr>
</tbody>
</c:forEach>
</table>
</body>
</html>
add.jsp——添加商品信息,修改商品信息的页面
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta charset="UTF-8">
<title>编辑商品信息</title>
</head>
<body>
<form action="/goods/add" method="post">
<table id="table" border="1" cellpadding="10" width="60%" cellspacing="1" style="margin: 0 auto;">
<tr>
<td>商品名称</td>
<td>
<input type="text" name="goods_id" value="${goods.goods_id}" style="display: none">
<input type="text" name="goods_name" value="${goods.goods_name}">
</td>
</tr>
<tr>
<td>商品单价</td>
<td>
<input type="text" name="goods_price" value="${goods.goods_price}">
</td>
</tr>
<tr>
<td>上架时间</td>
<td>
<input type="date" name="date" value="${goods.date}">
</td>
</tr>
<tr>
<td style="text-align: center" colspan="2"><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
九、配置tomcat服务器
十、小案例的运行截图
查询商品列表
添加商品
修改商品
删除商品
以上就是这个基于SSM框架的小案例,JSP页面有点丑,只是将数据进行了展示,欢迎评论,一起努力,共同进步