简单的ssh(spring+springmvc+hibernate)整合
来源:互联网 发布:linux ping 显示丢包 编辑:程序博客网 时间:2024/05/20 10:12
题目:
SSH基本CRUD练习:图书管理图书列表 -> 某本图书详情图书删除图书新建图书属性:书名 作者 出版社 出版年份 简介 类别完成方法:采用注解+纯java的配置 数据库:H2
一.导入包:
h2数据库包+hibernate包+spring包+springmvc+日志包+整合包+bootstrap(前端框架)包
二.配置web.xml:
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param><!-- 用哪种容器类 --> <param-name>contextClass</param-name> <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> </init-param> <init-param><!-- 入口配置 --> <param-name>contextConfigLocation</param-name> <!-- 纯java配置,加载替代spring.xml的类 会自动获取--> <param-value>config.AppConfig</param-value> <!-- <param-value>lianxi.text.AppConfig</param-value> --> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 编码配置--> <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> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
三.搭建包:
四.配置的java类AppConfig详解:
1.该类相当于spring.xml的配置:
2.注释详解:
@Configuration //==Beans@ComponentScan("lianxi") //扫描注解 @Component@PropertySource("classpath:db.properties")//引入外部文件,数据库驱动等的配置@EnableTransactionManagement //开启spring事务管理@EnableWebMvc //加载静态资源//继承WebMvcConfigurerAdapter才能调用静态资源public class AppConfig extends WebMvcConfigurerAdapter{ //配置连接SessionFactory @Bean public LocalSessionFactoryBean sessionfactory(DataSource dataSource){ LocalSessionFactoryBean factory = new LocalSessionFactoryBean(); factory.setDataSource(dataSource); //自动扫描注册user,数据库自动建表 factory.setPackagesToScan("lianxi.domian"); return factory; } //配置数据源 @Bean // 依赖Environment public DataSource dataSource(Environment env) { DriverManagerDataSource ds = new DriverManagerDataSource(); // env.getProperty("someKey") 获得属性值 ds.setDriverClassName(env.getProperty("jdbc.driverClassName")); ds.setUrl(env.getProperty("jdbc.url")); ds.setUsername(env.getProperty("jdbc.username")); ds.setPassword(env.getProperty("jdbc.password")); return ds; } //事务管理器 事务加在service层,@Transactional注解 @Bean public PlatformTransactionManager ma(SessionFactory sessionfactory){ HibernateTransactionManager transactionManager = new HibernateTransactionManager(); transactionManager.setSessionFactory(sessionfactory); return transactionManager; } //视图解析器 @Bean public ViewResolver viewResolver(){ InternalResourceViewResolver view = new InternalResourceViewResolver(); view.setViewClass(JstlView.class); view.setPrefix("/WEB-INF/jsp/"); view.setSuffix(".jsp"); return view; } //加载静态资源的配置 css和js public void addResourceHandlers(ResourceHandlerRegistry registry) { // /assets/css/app.css -> /WebContent/public/css/app.css // /assets/js/app.js -> /WebContent/public/js/app.js // /WebContent/public/ registry.addResourceHandler("/assets/**").addResourceLocations("/public/"); }}
五.控制类的详解:
@Controllerpublic class BookServlet { @Autowired //自动注入 private BookService bookservice; //日期转换 @InitBinder protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); } @RequestMapping(method = RequestMethod.POST,value="/addbook") public String addBook(Book book){ bookservice.addBook(book); return "success"; } @RequestMapping(value="/findbooks") public String findBooks(Model model){ List<Book> queryBook = bookservice.queryBook(); for(Book book:queryBook){ System.out.println(book); } model.addAttribute("allbooks", queryBook); return "showbook"; } @RequestMapping(value="/findbookbyname") public String findBookByName(Model model,@RequestParam("name") String bookname){ System.out.println("bookname"+bookname); Book queryBook = bookservice.queryByName(bookname); System.out.println(queryBook); model.addAttribute("queryBook", queryBook); return "bookdetails"; }}
六.bootstrap 前端框架的简单应用:
1.下载:http://www.bootcss.com/
2.拷贝到项目中:
3.引用它的form和css.
配置类AppConfig的配置:
(1)@EnableWebMvc //加载静态资源
(2)//继承WebMvcConfigurerAdapter
public class AppConfig extends WebMvcConfigurerAdapter{}
(3)
//加载静态资源的配置 css和js public void addResourceHandlers(ResourceHandlerRegistry registry) { // /assets/css/app.css -> /WebContent/public/css/app.css // /assets/js/app.js -> /WebContent/public/js/app.js // /WebContent/public/ registry.addResourceHandler("/assets/**").addResourceLocations("/public/"); }
(4)jsp页面中配置:
引用项目下导入的bootstrap文件的css
<link rel="stylesheet" href="${contextPath}/assets/bootstrap/css/bootstrap.css">
form前端的代码:https://v3.bootcss.com/css/#forms
<form action="${pageContext.request.contextPath}/addbook" method="post"> <div class="form-group"> <label for="author">作者:</label> <input type="text" class="author" id="author" placeholder="author" name="author"> </div> <div class="form-group"> <label for="bookname">书名:</label> <input type="text" class="form-control" id="bookname" placeholder="bookname" name="bookname"> </div> <div class="form-group"> <label for="chubanshe">出版社:</label> <input type="text" class="form-control" id="chubanshe" placeholder="chubanshe" name="chubanshe"> </div> <div class="form-group"> <label for="chubandate">出版时间:</label> <input type="text" class="form-control" id="chubandate" placeholder="chubandate" name="chubandate"> </div> <div class="form-group"> <label for="info">简介:</label> <input type="text" class="form-control" id="info" placeholder="info" name="info"> </div> <div class="form-group"> <label for="booktype"> 类别:</label> <input type="text" class="form-control" id="booktype" placeholder="booktype" name="booktype"> </div> <button type="submit" class="btn btn-default">提交</button> </form>
七.总结:
1.web.xml 很容易配错:当换成另一个注解类时,要修改web.xml的入口配置
<init-param><!-- 入口配置 --> <param-name>contextConfigLocation</param-name> <!-- 纯java配置,加载替代spring.xml的类 会自动获取--> <param-value>config.AppConfig</param-value> <!-- <param-value>lianxi.text.AppConfig</param-value> --> </init-param>
2.实体类自动扫描创建表:factory.setPackagesToScan(“lianxi.domian”);容易忘记写
@Bean public LocalSessionFactoryBean sessionfactory(DataSource dataSource){ LocalSessionFactoryBean factory = new LocalSessionFactoryBean(); factory.setDataSource(dataSource); //自动扫描注册user,数据库自动建表 factory.setPackagesToScan("lianxi.domian"); return factory; }
3.数据库的方言和自动创建表配置文件(src目录下):
hibernate.dialect=org.hibernate.dialect.H2Dialecthibernate.hbm2ddl.auto=create
4.进入h2数据库:cmd 包所在目录 -java -jar h2-1.4.190.jar (选择server)
5.清晰思路,mvc各层之间的调用
阅读全文
0 0
- 简单的ssh(spring+springmvc+hibernate)整合
- ssh(spring springMVC hibernate)的整合
- SpringMVC+Spring+Hibernate 简单的整合
- Spring+SpringMVC+Hibernate三大框架整合的SSH
- SSH spring+springmvc+hibernate+maven 整合详解
- 一个简单的Springmvc Spring Hibernate 整合的案例
- SpringMVC+Hibernate+Spring的整合
- spring、springmvc、hibernate的整合
- SpringMVC+Hibernate+Spring 简单的一个整合实例
- 超简单spring、springmvc和hibernate整合的列子
- ssh整合:spring与hibernate的整合
- SSH系列(一):Spring + Hibernate + SpringMVC 整合
- SSH系列(二):Spring + Hibernate + SpringMVC Maven整合
- spring springmvc hibernate(ssh)项目整合开发---总体架构搭建
- SSH整合(Spring+SpringMVC+Hibernate)注解版
- ssh新手整合的历程spring+springmvc+hibernate 以及其他 一点奇葩异常的解决过程
- SpringMVC+Spring+Hibernate整合
- SpringMVC整合Spring、Hibernate
- Dynamic Cloud Instance Acquisition via IaaS Cloud Brokerage 文章阅读笔记
- 面向对象中的多态,对象的向上转型和向下转型
- 数组元素求和、求最大值、最小值
- 程序员写代码时的各种内心戏 ……
- Cookie
- 简单的ssh(spring+springmvc+hibernate)整合
- Android中EventBus的使用
- esri默认底图的加载
- 曾经被ALpha Go支配的恐惧
- 数据的交换输出
- The basic of Java-Extends,Encapsulation,Abstract,Object,Singleton,Static(Day04)
- Spring注入方式
- 大数据里面B域,M域,O域具体是指什么
- 高级程序设计——Ajax