替代struts

1  web.xml中配置springmvc中央控制器

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3. <display-name>springmvc</display-name>
  4.  
  5. <!-- SpringMVC中央控制器 -->
  6. <!-- Spring MVC 的Servlet,它将加载WEB-INF/mvc-servlet.xml 的
  7. 配置文件,以启动Spring MVC模块-->
  8. <servlet>
  9. <servlet-name>mvc</servlet-name>
  10. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  11. <!-- 代表在容器启动时就初始化,不写的时候代表在第一次请求的时候完成初始化,
  12. 数字越小初始化越靠前-->
  13. <load-on-startup>1</load-on-startup>
  14. </servlet>
  15. <servlet-mapping>
  16. <servlet-name>mvc</servlet-name>
  17. <!-- 在spring中要写/而不是/* -->
  18. <url-pattern>/</url-pattern>
  19. </servlet-mapping>
  20.  
  21. <!-- Spring 容器启动监听器 -->
  22. <listener>
  23. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  24. </listener>
  25. <!--spring服务层配置文件都放在以applicationContext开头的xml文件中,比如数据源 事务等-->
  26. <context-param>
  27. <param-name>contextConfigLocation</param-name>
  28. <param-value>classpath:applicationContext*.xml</param-value>
  29. </context-param>
  30.  
  31. </web-app>

2

web.xml 中定义了一个名为 mvc 的 Spring MVC 模块,按照 Spring MVC 的契约,需要在
WEB-INF/mvc-servlet.xml 配置文件中定义 Spring MVC 模块的具体配置。mvc-servlet.xml
的配置内容如下所示:
在WEB-INF建立xxx-servlet.xml 其中xxx代表 web.xml中的<servlet-name>mvc</servlet-name>
名字一致,所以我们在这里建立mvc-servlet.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. <!-- 有一个用途是可以返回一个对象 ,其他的暂时不知道-->
  6. xmlns:mvc="http://www.springframework.org/schema/mvc"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
  11. <!-- 组件扫描 扫描springmvc的controller部分 -->
  12. <!--对包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能-->
  13. <context:component-scan base-package="com.kaishengit.controller"/>
  14. <!-- 使用上面导入的schema/mvc 启用注解-->
  15. <mvc:annotation-driven/>
  16.  
  17. <!-- 静态资源 **该目录及其子目录
      <img alt="" src="/static/image/kaola.jpg" width="300">
    -->
  18. <mvc:resources location="/static/" mapping="/static/**"/>
  19.  
  20. <!-- 单纯的跳转,比如跳转到静态网页等 比如请求根的时候到index.jsp -->
  21. <mvc:view-controller path="/" view-name="index"/>
  22.  
  23. <!-- 视图解析器 -->
  24. <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  25. <!-- 让它支持jstl -->
  26. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  27. <!-- 前缀 -->
  28. <property name="prefix" value="/WEB-INF/views/"/>
  29. <!-- 后缀 -->
  30. <property name="suffix" value=".jsp"/>
  31. </bean>
  32.  
  33. <!-- 文件上传解析器 -->
  34. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  35. <!-- 解析request的编码 ,Default is ISO-8859-1 -->
  36. <property name="defaultEncoding" value="UTF-8" />
  37. <!-- 设置最大允许的大小(字节)。-1表示没有限制(默认) 1024*1024*10=10MB -->
  38. <property name="maxUploadSize" value="1048576000" />
  39. <!--被允许的最大的内存的大小,Default is 10240 bytes -->
  40. <property name="maxInMemorySize" value="20480" />
  41. <!-- 一个类似懒加载的属性.可以定义该属性.让解析文件的时候再抛异常,然后Controller中定义异常处理的方法 -->
  42. <property name="resolveLazily" value="true" />
  43. </bean>
  44.  
  45. </beans>

3 写controller组件

  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4.  
  5. import javax.servlet.ServletContext;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import javax.servlet.http.HttpSession;
  9.  
  10. import org.apache.commons.io.FileUtils;
  11. import org.springframework.stereotype.Controller;
  12. import org.springframework.ui.Model;
  13. import org.springframework.web.bind.annotation.PathVariable;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import org.springframework.web.bind.annotation.RequestParam;
  17. import org.springframework.web.bind.annotation.ResponseBody;
  18. import org.springframework.web.multipart.MultipartFile;
  19. import org.springframework.web.servlet.ModelAndView;
  20. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  21.  
  22. import com.kaishengit.entity.User;
  23. /*我们可以看出 HelloController 和一般的类并没有区别,
  24. 它没有实现任何特殊的接口,因而是一个地道的 POJO。让这个 POJO特殊就是 Spring MVC 的注解!*/
  25. /*@Controller、@Service 以及 @Repository 和 @Component 注解的作用是等价的:
  26. * 将一个类成为 Spring 容器的 Bean。由于 Spring MVC 的 Controller 必须事先是一个 Bean,
  27. * 所以 @Controller 注解是不可缺少的。 */
  28. @Controller
  29. /* 类似与namespace */
  30. @RequestMapping("/book")
  31. public class HelloController {
  32. /* 与struts不一样的是返回值可以有也可以没有void
  33. struts请求方式是加@action注解,springmvc是加@RequestMapping(value="/upload",method=RequestMethod.POST)
  34. 当只写@RequestMapping(method=RequestMethod.POST)的时候默认请求/book(也就是namespace)路径
  35. 代表请求的路径是/book/upload,以post的方法提交
  36. return "hello";跟前面配置的视图解析器拼凑成一个路径:就代表前往WEB-INF/views/hello.jsp页面
  37. return "book/hello"跟前面配置的视图解析器拼凑成一个路径:就代表前往WEB-INF/views/book/hello.jsp页面*/
  38.  
  39. ---------------------------------------------------
  40.  
  41. // 两个相同的请求路径/book/add 但是请求方式不一样,这个get在这里代表我要去添加页
  42. @RequestMapping(value="/add",method=RequestMethod.GET)
  43. // 想使用的东西都可以从参数中传进来
  44. public ModelAndView add(HttpSession session,HttpServletRequest request,HttpServletResponse response) {
  45. // 页面传参方式1(使用的是request) 返回值是ModelAndView
  46. ModelAndView mav = new ModelAndView();
  47. mav.addObject("name", "Rose");
  48. // 去哪里
  49. mav.setViewName("book/add");
  50. // 放进session中
  51. session.setAttribute("name", "sessionName");
  52. // 放入application中,先用session获取application
  53. ServletContext application = session.getServletContext();
  54. application.setAttribute("name", "appName");
  55.  
  56. System.out.println("add");
  57. return mav;
  58. }
  59.  
  60. /* 两个相同的请求路径/book/add 但是请求方式不一样,这个get在这里代表我要去添加页
  61. @RequestMapping(value="/add",method=RequestMethod.GET)
  62. public String add(Model model) {
  63. //页面传参方式2(使用的是request),返回值是String
  64. model.addAttribute("name","jeck");
  65.  
  66. return "/book/add";
  67. }*/
  68.  
  69. // 接受表单的值只需要传入表单的name属性值,username要与表单中要传进来的name属性值一致
  70. @RequestMapping(value="/add",method=RequestMethod.POST)
  71. public String save(String username) {
  72. System.out.println(username);
  73. return "redirect:/book/add";
  74. }
  75.  
  76. // 或者当表单非常多的时候,用对象的形式
  77.  
  78. // 两个相同的请求路径/book/add 但是请求方式不一样,这个post在这里代表我要去提交表单
  79. @RequestMapping(value="/add",method=RequestMethod.POST)
  80. /* 表单形式不用变,不用写成name="user.username"仍然用原来的name="username"
  81. springmvc会自动尝试能不能加入到user对象中,不能加进去的仍然是原来的方式接受比如String email
  82. RedirectAttributes指操作成功后给一个提示,然后刷新后提示消失*/
  83.  
  84. public String save(User user,String zip,RedirectAttributes redirectAttributes) {
  85. System.out.println("Hello,"+user.getUsername() + " : " + user.getPassword() + " : " + zip);
  86.  
  87. redirectAttributes.addFlashAttribute("message", "保存成功");
  88. // 表示重定向到/book/add 重定向是get请求
  89. return "redirect:/book/add";
  90. }
  91.  
  92. --------------------------------------------------------------------
  93.  
  94. /* 比如ajax返回一个字符串,直接return "xxx"
  95. 但是返回值是String的时候,springmvc会认为返回的是路径的名字--
  96. 所以加@ResponseBody表示这是一个相应的内容*/
  97. @RequestMapping("/message")
  98. public @ResponseBody String showMessage() {
  99. return "I love you";
  100. }
  101. // 如果返回的是user(实体类),会自动转换成json 需要导入jackson-all-1.8.10.jar
  102. @RequestMapping(value="/user",method=RequestMethod.GET,produces={"application/json;charset=UTF-8"})
  103. // 也可以加在方法之上
  104. @ResponseBody
  105. public User showUser() {
  106. User user = new User();
  107. user.setUsername("张三丰");
  108. user.setPassword("123123");
  109. return user;
  110. }
  111.  
  112. -------------------------------------------------------
  113.  
  114. /* url传参 */
  115. @RequestMapping("/show/{id1}")
  116. /* 传三个参数,以逗号隔开在url中就是用逗号分隔,用斜杠隔开,在url中就是用斜杠分隔
  117. @RequestMapping("/show/{id1},{id2},{id3}") */
  118. /* 加正则表达式
  119. @RequestMapping("/show/{id1:\\d+},{id2:\\d+},{id3:\\d+}") */
  120. /* 接受url中传来的参数,但是我们不知道这个传来的参数是从url中获得的,还是从表单中获得的,
  121. 所以加@PathVariable,代表是从url中获取 参数中的id分别对应上面传来的id,名字要一致*/
  122. public String show(@PathVariable int id1,@PathVariable int id2,@PathVariable int id3) {
  123. System.out.println("ID:" + id1);
  124. System.out.println("ID:" + id2);
  125. System.out.println("ID:" + id3);
  126. return "book/add";
  127. }
  128. /* 如果还想用原始的?xx=xx传参看下面,有的时候还真需要原始的?传参 */
  129. ----------------------------------------------------------------
  130. @RequestMapping("/page")
  131. public String page(int p) {
  132. System.out.println("pageNo:" + p);
  133. return "book/add";
  134. }
  135.  
  136. @RequestMapping("/page")
  137. /* 如果参数可有可无@RequestParam,默认是1 */
  138. public String page(@RequestParam(value="p",required=false,defaultValue="1")int p) {
  139. System.out.println("pageNo:" + p);
  140. return "book/add";
  141. }
  142.  
  143. -------------------------------------------------------------
  144. /* 文件上传 commons-fileupload-1.2.2.jar commons-io-2.4.jar
  145. 需要在xxx-servlet.xml配置文件上传解析器*/
  146.  
  147. <form action="/book/upload" method="post" enctype="multipart/form-data">
  148. <input type="file" name="pic">
  149. <input type="text" name="username">
  150. <button>保存</button>
  151. </form>
  152.  
  153. @RequestMapping(value="/upload",method=RequestMethod.POST)
  154. /* MultipartFile接受文件对象 */
  155. public String upload(String username,MultipartFile pic) {
  156.  
  157. if(!pic.isEmpty()) {
  158. /*<!-- System.out.println("fileName:" + pic.getName());获取的是表单中name的属性pic -->*/
  159. System.out.println("fileName:" + pic.getOriginalFilename());
  160. System.out.println("fileSize:" + FileUtils.byteCountToDisplaySize(pic.getSize()));
  161. System.out.println("Content-type:" + pic.getContentType());
  162. System.out.println("username:" + username);
  163. /* 方法1: 获得输入流了,接下来你懂的
  164. InputStream inputStream = pic.getInputStream();
  165. */
  166. try {
  167. /* 方法2: */
  168. pic.transferTo(new File("C:/kaola.jpg"));
  169. } catch (Exception e) {
  170. e.printStackTrace();
  171. }
  172.  
  173. } else {
  174. System.out.println("file is empty");
  175. }
  176.  
  177. return "redirect:/book/add";
  178. }
  179.  
  180. }

好了,下面介绍一个spring  springMVC hibernate的 框架搭建

--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------基于springMVC,hibernate,spring------------
--------------------------------------------------------------------
--------------------------------------------------------------------

首先是web.xml

  1. <!-- web.xml-- -->
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  4. <display-name>springmvc</display-name>
  5.  
  6. <!-- 字符集过滤器 -->
  7. <filter>
  8. <filter-name>characterEncodingFilter</filter-name>
  9. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  10. <init-param>
  11. <param-name>encoding</param-name>
  12. <param-value>UTF-8</param-value>
  13. </init-param>
  14. </filter>
  15. <filter-mapping>
  16. <filter-name>characterEncodingFilter</filter-name>
  17. <url-pattern>/*</url-pattern>
  18. </filter-mapping>
  19.  
  20. <!-- OpenSessionInView -->
  21. <filter>
  22. <filter-name>openSessionInView</filter-name>
  23. <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
  24. </filter>
  25. <filter-mapping>
  26. <filter-name>openSessionInView</filter-name>
  27. <url-pattern>/*</url-pattern>
  28. </filter-mapping>
  29.  
  30. <!-- SpringMVC中央控制器 -->
  31. <!-- Spring MVC 的Servlet,它将加载WEB-INF/mvc-servlet.xml 的
  32. 配置文件,以启动Spring MVC模块-->
  33. <servlet>
  34. <servlet-name>mvc</servlet-name>
  35. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  36. <load-on-startup>1</load-on-startup>
  37. </servlet>
  38. <servlet-mapping>
  39. <servlet-name>mvc</servlet-name>
  40. <url-pattern>/</url-pattern>
  41. </servlet-mapping>
  42.  
  1. <!-- Spring 容器启动监听器 -->
  2. <listener>
  3. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  4. </listener>
  1.  
  2. <!--spring服务层配置文件都放在以applicationContext开头的xml文件中,比如数据源 事务等-->
  3. <context-param>
  4. <param-name>contextConfigLocation</param-name>
  5. <param-value>classpath:applicationContext*.xml</param-value>
  6. </context-param>
  7.  
  8. </web-app>

web.xml 中定义了一个名为 annomvc 的 Spring MVC 模块,按照 Spring MVC 的契约,需要在
WEB-INF/annomvc-servlet.xml 配置文件中定义 Spring MVC 模块的具体配置。mvc-servlet.xml
的配置内容如下所示:
在WEB-INF建立xxx-servlet.xml 其中xxx代表 web.xml中的<servlet-name>mvc</servlet-name>
名字一致,所以我们在这里建立mvc-servlet.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. <!-- 有一个用途是可以返回一个对象 ,其他的暂时不知道-->
  6. xmlns:mvc="http://www.springframework.org/schema/mvc"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
  11. <!-- 组件扫描 扫描springmvc的controller部分 -->
  12. <!--对包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能-->
  13. <context:component-scan base-package="com.kaishengit.controller"/>
  14. <!-- 使用上面导入的schema/mvc 启用注解-->
  15. <mvc:annotation-driven/>
  16.  
  17. <!-- 静态资源 **该目录及其子目录-->
  18. <mvc:resources location="/static/" mapping="/static/**"/>
  19.  
  20. <!-- 单纯的跳转,比如跳转到静态网页等 比如请求根的时候到index.jsp -->
  21. <mvc:view-controller path="/" view-name="index"/>
  22.  
  23. <!-- 视图解析器 -->
  24. <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  25. <!-- 让它支持jstl -->
  26. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  27. <!-- 前缀 -->
  28. <property name="prefix" value="/WEB-INF/views/"/>
  29. <!-- 后缀 -->
  30. <property name="suffix" value=".jsp"/>
  31. </bean>
  32.  
  33. <!-- 文件上传解析器 -->
  34. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  35. <!-- 解析request的编码 ,Default is ISO-8859-1 -->
  36. <property name="defaultEncoding" value="UTF-8" />
  37. <!-- 设置最大允许的大小(字节)。-1表示没有限制(默认) 1024*1024*10=10MB -->
  38. <property name="maxUploadSize" value="1048576000" />
  39. <!--被允许的最大的内存的大小,Default is 10240 bytes -->
  40. <property name="maxInMemorySize" value="20480" />
  41. <!-- 一个类似懒加载的属性.可以定义该属性.让解析文件的时候再抛异常,然后Controller中定义异常处理的方法 -->
  42. <property name="resolveLazily" value="true" />
  43. </bean>
  44.  
  45. </beans>

spring
 根目录配置applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
  10. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  11. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"
  12. >
  13.  
  14. <!-- Controller在之前的配置springmvc的时候已经扫描过了.扫描的时候记得把去除掉 -->
  15. <context:component-scan base-package="com.kaishengit">
  16. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  17. </context:component-scan>
  18.  
  19. <!-- 配置数据源 -->
  20. <context:property-placeholder location="classpath:jdbc.properties"/>
  21. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  22. <property name="url" value="${jdbc.url}"/>
  23. <property name="driverClassName" value="${jdbc.driver}"/>
  24. <property name="username" value="${jdbc.name}"/>
  25. <property name="password" value="${jdbc.password}"/>
  26. <property name="minIdle" value="5"/>
  27. <property name="maxActive" value="10"/>
  28. <property name="maxWait" value="5000"/>
  29. </bean>
  30.  
  31. <!-- Hibernate SessionFactory -->
  32. <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  33. <property name="dataSource" ref="dataSource"/>
  34. <property name="packagesToScan" value="com.kaishengit.pojo"/>
  35. <property name="hibernateProperties">
  36. <props>
  37. <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  38. <prop key="hibernate.show_sql">true</prop>
  39. <prop key="hibernate.cache.use_query_cache">true</prop>
  40. <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
  41. </props>
  42. </property>
  43. </bean>
  44.  
  45. <!-- Hibernate事务管理器 -->
  46. <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  47. <property name="sessionFactory" ref="sessionFactory"/>
  48. </bean>
  49.  
  50. <tx:annotation-driven transaction-manager="transactionManager"/>
  51.  
  52. </beans>

ehcache.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ehcache>
  3.  
  4. <diskStore path="java.io.tmpdir"/>
  5.  
  6. <defaultCache
  7. maxElementsInMemory="1000"
  8. eternal="false"
  9. timeToIdleSeconds="120"
  10. timeToLiveSeconds="120"
  11. overflowToDisk="true"
  12. />
  13.  
  14. <!--
  15. <cache name="com.kaishengit.pojo.User"
  16. maxElementsInMemory="100"
  17. eternal="false"
  18. timeToIdleSeconds="120"
  19. timeToLiveSeconds="120"
  20. overflowToDisk="true"
  21. />
  22. -->
  23. </ehcache>

jdbc.properties

  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql:///book?useUnicode=yes&characterEncoding=UTF-8
  3. jdbc.name=root
  4. jdbc.password=root

springMVC用法 以及一个简单的基于springMVC hibernate spring的配置的更多相关文章

  1. 手写一个简单版的SpringMVC

    一 写在前面 这是自己实现一个简单的具有SpringMVC功能的小Demo,主要实现效果是; 自己定义的实现效果是通过浏览器地址传一个name参数,打印“my name is”+name参数.不使用S ...

  2. struts1:(Struts重构)构建一个简单的基于MVC模式的JavaWeb

    在构建一个简单的基于MVC模式的JavaWeb 中,我们使用了JSP+Servlet+JavaBean构建了一个基于MVC模式的简单登录系统,但在其小结中已经指出,这种模式下的Controller 和 ...

  3. 一个简单的基于 DirectShow 的播放器 2(对话框类)

    上篇文章分析了一个封装DirectShow各种接口的封装类(CDXGraph):一个简单的基于 DirectShow 的播放器  1(封装类) 本文继续上篇文章,分析一下调用这个封装类(CDXGrap ...

  4. 一个简单的基于 DirectShow 的播放器 1(封装类)

    DirectShow最主要的功能就是播放视频,在这里介绍一个简单的基于DirectShow的播放器的例子,是用MFC做的,今后有机会可以基于该播放器开发更复杂的播放器软件. 注:该例子取自于<D ...

  5. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

  6. 构建一个简单的基于MVC模式的JavaWeb

    零晨三点半了,刚刚几个兄弟一起出去吼歌,才回来,这应该是我大学第二次去K歌,第一次是大一吧,之后每次兄弟喊我,我都不想去,因为我还是很害怕去KTV,或许是因为那里是我伤心的地方,也或许是因为我在那里失 ...

  7. 从零开始搭建一个简单的基于webpack的vue开发环境

    原文地址:https://segmentfault.com/a/1190000012789253?utm_source=tag-newest 从零开始搭建一个简单的基于webpack的react开发环 ...

  8. 通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布

    之前的章节我们介绍了如何通过dapr发起一个服务调用,相信看过前几章的小伙伴已经对dapr有一个基本的了解了,今天我们来聊一聊dapr的另外一个功能--订阅发布 目录:一.通过Dapr实现一个简单的基 ...

  9. 通过Dapr实现一个简单的基于.net的微服务电商系统

    本来想在Dpar 1.0GA时发布这篇文章,由于其他事情耽搁了放到现在.时下微服务和云原生技术如何如荼,微软也不甘示弱的和阿里一起适时推出了Dapr(https://dapr.io/),园子里关于da ...

随机推荐

  1. Linux BFS简介

    1. 什么是BFS 这里的BFS可不是广度优先算法,本文介绍的BFS是Linux的一个非Linux mainline调度算法.根据作者的描述BFS能够极大的提高低端设备(这里的低端设备的定义为:CPU ...

  2. DontDestroyOnLoad(Unity3D开发之五)

    Unity中我们从A场景切换到B场景的时候,A场景全部对象都会销毁,但有时候我不须要销毁某些东西. 比方一个简单的游戏的背景音乐,我不须要多次反复创建,多个场景播放这一个即可了.这个时候就须要用到Do ...

  3. openstack之keystone

    一.什么是keystone 用于为openstack家族中的其它组件成员提供统一的认证服务,包括身份认证.令牌发放和校验.服务列表.用户权限定义等: 基本概念: 用户User:用于身份认证.一个用户可 ...

  4. CSS引入的方式有哪些? link和@import的区别是?转载

    CSS引入的方式有哪些? link和@import的区别是? HTML 中引入 CSS 的方式 有 4 种方式可以在 HTML 中引入 CSS.其中有 2 种方式是在 HTML 文件中直接添加 CSS ...

  5. JqueryMobile新手问题大全

    Jquery mobile 新手问题总汇 34 2013-04-22 / 分类:JqueryMobile / 标签:JqueryMobile,Jqm 此文章将会持续更新,主要收录一些新手比较常见的问题 ...

  6. iPhone 真机调试应用程序

    原文:http://blog.sina.com.cn/s/blog_68e753f70100r3w5.html 真机调试iphone应用程序 1.真机调试流程概述 1)       真机调试应用程序, ...

  7. Oracle定时器调用存储过程

    1. 创建表 create table job_table(run_time date); 2. 创建存储过程 create or replace procedure job_proc is begi ...

  8. django开发简易博客(四)

    上一节,我们讲述了怎么使用静态文件,并使用bootstrap对页面进行了美化,这一节我们将增强我们blog的功能,添加发表博客,删除博客的功能. 一.表单的使用 要实现添加blog的功能,就得使用表单 ...

  9. C# DES对称加密解密

    /// <summary> /// 加密 /// </summary> /// <param name="str"></param> ...

  10. poj 1430 第二类斯特林数

    1 #include <iostream> #include <cmath> #include <algorithm> using namespace std; i ...