java web运行流程图_第一个可运行的java web简易程序学习笔记

这篇博客详细介绍了使用SpringMVC、Spring和Mybatis搭建Java Web应用程序的全过程,包括环境配置、依赖添加、各层接口与实现、XML配置、web.xml设置以及数据库操作。通过一个简单的查询示例,展示了从浏览器请求到数据显示的完整流程。
摘要由CSDN通过智能技术生成

学习内容链接

总体思路

使用springMVC+spring+mybatis的方式打通表现层/业务层/持久层。从浏览器接收访问路径开始,经过数据库调取数据(只做查询),最后从浏览器显示视图的全部简易流程。

开发环境

Eclipse oxygen

tomcat 8.5

Apache maven 3.5.3

mysql

实现步骤

环境配置完成后,启动Maven新建webapp项目

在pom.xml中添加依赖(依赖来源:Maven Repository)

依赖清单:

4.1.3.RELEASE

5.1.2-beta

5.1.6

1.2.3

3.1.1

4.12

1.2

1.0

1.2.7

3.1.0

1.0.18

1.2.16

1.2

1.2.1

1.3.2

2.6

1.0

1.3.5

创建实体类Category,定义了private的id和name,以及getter/setter方法

public class Category {

private Integer id;

private String name;

public Integer getId() { return id; }

public void setId(Integer id) { this.id = id; }

public String getName() { return name; }

public void setName(String name) { this.name = name; }

}

创建接口CategoryMapper,申明list方法,未来可以添加增删改查等操作

public interface CategoryMapper {

List list();

}

创建接口CategoryService,申明list方法

public interface CategoryService {

List list();

}

创建类CategoryServiceImpl实现CategoryService接口

@Service

public class CategoryServiceImpl implements CategoryService {

@Autowired

CategoryMapper categoryMapper;

@Override

public List list() { return categoryMapper.list(); }

}

@Service 表示将CategoryServiceImpl类交给spring来管理,并申明为Service类

@Autowired 表示由spring自动装配注入categoryMapper

创建类CategoryController,处理请求,跳转视图

@Controller

@RequestMapping("")

public class CategoryController {

@Autowired

CategoryService categoryService;

//处理admin_category_list路径的url

@RequestMapping("admin_category_list")

public String list(Model model) {

List cs=categoryService.list();

//向model传递数据

model.addAttribute("cs",cs);

//视图跳转到listCategory.jsp文件

return "admin/listCategory";

}

}

创建CategoryMapper.xml配置文件,实现id倒排序查询所有分类

//id="list"唯一标识此sql语句,并与接口方法名保持一致

select * from category order by id desc

创建核心文件applicationContext.xml--对注解的识别;对jdbc.properties的引用;指定数据库连接池;配置Mybatis的SessionFactory;

创建springMVC.xml

配置web.xml--指定spring核心配置文件applicationContext.xml;设置中文过滤器;分发servlet,指定springMVC配置文件springMVC.xml

contextConfigLocation

classpath:applicationContext.xml

org.springframework.web.context.ContextLoaderListener

CharacterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

utf-8

CharacterEncodingFilter

/*

mvc-dispatcher

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:springMVC.xml

1

mvc-dispatcher

/

其他配置(日志文件log4j.properties;数据库配置文件jdbc.properties),略

使用的静态资源,略

创建listCategory.jsp文件

简易测试类

public static void main(String args[]) {

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

try (Connection c = DriverManager.getConnection(

"jdbc:mysql://localhost:3306/tmall_ssm?useUnicode=true&characterEncoding=utf8", "root", "admin");

Statement s = c.createStatement();) {

for(int i=0;i<=10;i++) {

String sqlFormat="insert into category values (null,'测试分类%d')";

String sql=String.format(sqlFormat, i);

s.execute(sql);

}

}catch(SQLException e) {

e.printStackTrace();

}

}

运行思路

从浏览器上访问路径/admin_category_list

根据web.xml中的配置(分发servlet),将拦截到的/admin_category_list,交给DispatcherServlet来处理

mvc-dispatcher

/

【注】使用的'/'将会覆盖到容器的default servlet,凡是web.xml中找不到匹配的URL,访问请求都将交给该servlet,即DispatcherServlet来处理

DispatcherServlet根据springMVC的配置(扫描注解),将这次请求交由CategoryController类来处理,映射到该类的list方法上(list方法带有@RequestMapping("admin_category_list")注解)

CategoryController自动注入CategoryService,在访问了categoryService.list()方法时,再自动注入CategoryMapper

根据applicationContext.xml配置的会话工厂SessionFactory,使用mapperLocations属性来指定resources/mapper下的xml文件,将读取的CategoryMapper.xml与CategoryMapper关联起来

通过步骤4、5完成CategoryController的实例化,使用CategoryController.list()处理查询请求,id为‘list’的sql语句被执行,将查询结果封装到Category对象,并存入List类型的cs中

把集合cs放入model中传递给jsp,之后跳转到admin/listCategory.jsp页面,经过foreach把List项逐个显示出来

流程图

2626bc182a6b

forquery.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值