当前位置: 首页 > news >正文

spring整合javaweb(第二版)

引入依赖

<!--spring web-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>


整个目录结构:

 


entity层
public class Book {
private Integer bookid;
private String bookname;
private String bookprice;
private String booktype;

public Integer getBookid() {return bookid;}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}

public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}

public String getBookprice() {
return bookprice;
}
public void setBookprice(String bookprice) {
this.bookprice = bookprice;
}

public String getBooktype() {
return booktype;
}
public void setBooktype(String booktype) {
this.booktype = booktype;
}
}

dao层
public interface IBookDAO {
/**
*
* @param book
* @return
*/
public int addBook(Book book);
}


IBookDAO.xml
<?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="cn.happy.javaweb.dao.IBookDAO">

<insert id="addBook" parameterType="Book">
insert into book(bookname,bookprice,booktype) value(#{bookname},#{bookprice},#{booktype})
</insert>

</mapper>



service层
public interface IBookService {
/**
*
* @param book
* @return
*/
public int addBook(Book book);
}



public class BookServiceImpl implements IBookService {
//植入dao
private IBookDAO dao;
public int addBook(Book book) {
return dao.addBook(book);
}


public IBookDAO getDao() {return dao;}
public void setDao(IBookDAO dao) {
this.dao = dao;
}
}



jdbc.properties配置文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///school
jdbc.username=root
jdbc.password=123156

大配置文件(mybatis-config01.xml)
 
 
<?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> <!--根节点 -->

<!--配置类型别名-->
<typeAliases>
<!--将该类中的简单类型作为别名 -->
<package name="cn.happy.javaweb.entity"></package>
</typeAliases>

</configuration>



success.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加图书</title>
</head>
<body>
<center>
<form method="post" action="/BookServlet">
图书名称:<input type="text" name="name"><br/>
图书价格:<input type="text" name="price"><br/>
图书类型:<input type="text" name="type"><br/>
<input type="submit" value="提交">
</form>
</center>
</body>
</html>

index.jsp页面
<%@ page language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>添加图书</title>
</head>
<body>
<h2>添加成功</h2>
</body>
</html>

 

 

web.xml配置文件

<!--上下文-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContextJavaWed.xml</param-value>
</context-param>
<!--监听器 监听ServletContext i你提的方法执行过程-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

servlet层

public class BookServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String name= request.getParameter("name");
String price= request.getParameter("price");
String type= request.getParameter("type");
Book book=new Book();
book.setBookname(name);
book.setBookprice(price);
book.setBooktype(type);
//调用添加的方法
/* ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContextJavaWed.xml");*/

WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());

System.out.println(context);
IBookService service = (IBookService)context.getBean("studentService");
int count = service.addBook(book);
if (count>0){ //添加成功
request.getRequestDispatcher("/index.jsp").forward(request,response);
}else { //添加失败
request.getRequestDispatcher("/success.jsp").forward(request,response);
}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}

 

借助Tomcat来运行web应用
    ServletContext到底是什么?
    解析:在jsp中,他就是内置对象application的类型  ,在servlet中就是Servlet上下文    
 
      1.对于Web应用来说,ServletContext对象是唯一的,一个Web应用,只有一个ServletContext对象。
  该对象是在Web应用装载时初始化的,即在Web应用装载时自动执行接口ServletContext的初始化方法。
 
      2.该初始化方法在整个应用中只会执行一次。若将Spring容器的创建语句放到ServletContext的初始化方法中执行,
       并将创建好的Spring容器作为ServletContext的属性放入其中。以后再需要Spring容器,直接读取该属性值即可。
 
      3.ServletContext对象生命周期与Web应用的相同。即放在其中的属性为全局属性。
      所以,放入ServletContext中的Spring容器,在整个应用的生命周期中均可被访问。
      这样就可以保证Spring容器在Web应用中的唯一性了。

 

 
 
 

 

 
 
 


转载于:https://www.cnblogs.com/sujulin/p/7736840.html

相关文章:

  • 转:依赖注入那些事儿
  • 只操作git(cmd)就可以使用git将项目上传到github
  • 转载:javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册...
  • 【前端】自适应布局方法总结
  • UML类图详解_关联关系_多对多
  • MyBatis-day2
  • 入坑tensorflow
  • 获取class文件对象的三种方法
  • ALPHA-3
  • 关于Vue.js
  • mybatis(错误一) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案...
  • Oracle分区表常见操作
  • shell设置时间递减脚本
  • linux网络流控-htb算法简析
  • Xpath语法
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Android Volley源码解析
  • CODING 缺陷管理功能正式开始公测
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Cumulo 的 ClojureScript 模块已经成型
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • JavaScript 基础知识 - 入门篇(一)
  • JS字符串转数字方法总结
  • Redis 中的布隆过滤器
  • SpringBoot 实战 (三) | 配置文件详解
  • TypeScript迭代器
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 两列自适应布局方案整理
  • 码农张的Bug人生 - 见面之礼
  • 如何优雅地使用 Sublime Text
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • (145)光线追踪距离场柔和阴影
  • (9)目标检测_SSD的原理
  • (C++17) std算法之执行策略 execution
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)Windows2003安全设置/维护
  • (转)可以带来幸福的一本书
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .equals()到底是什么意思?
  • .net core 依赖注入的基本用发
  • .Net mvc总结
  • .net 调用php,php 调用.net com组件 --
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .Net8 Blazor 尝鲜
  • .NET构架之我见
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @Controller和@RestController的区别?