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

怎么使自己做的网站有音乐网站建设走无形资产

怎么使自己做的网站有音乐,网站建设走无形资产,网站免费源码下载,住房和城乡建设部网站倪虹目录 一、什么是Spring MVC #xff1f; Spring 和 Spring MVC 的区别#xff1f; Spring MVC 的运行流程#xff1f; 二、实现步骤 1. DispatcherServlet 1. 创建一个中央分发器 拦截所有请求 测试 2. 接管 IOC 容器 1. 创建配置文件 2. 修改 web.xml 配置文件 …目录 一、什么是Spring MVC Spring 和 Spring MVC 的区别 Spring MVC 的运行流程 二、实现步骤 1. DispatcherServlet 1. 创建一个中央分发器 拦截所有请求 测试 2. 接管 IOC 容器 1. 创建配置文件 2. 修改 web.xml 配置文件 3. 启动 IOC 容器 2. HandlerMapping 1. 添加映射 1. 创建 RequestMapping 注解 2. 创建映射Bean 3. 使用 RequestMapping 注解 4. 添加映射 2. 处理映射 1. 创建 ResponseBody 注解 2. 创建一个 HTML 文件 3. 使用 ResponseBody 注解 4. 处理映射 3. 测试 一、什么是Spring MVC Spring MVC 是 Spring 的模块之一Spring MVC 实现了MVC 的设计思想并继承了 Servlet API 的WEB 框架。当用户在游览器地址栏上输入 url 后Spring MVC就可以处理用户的请求 Spring 和 Spring MVC 的区别 Spring 是一个框架这个框架由不同的模块组成其中一个模块 就是Spring MVCSpring 核心是IOC 控制反转IOC 容器负责对象的创建和依赖注入。 Spring MVC 是基于 MVC 设计来开发web 应用Spring MVC 将前端发送的请求分发给适当的控制器 Controller然后根据结果选择合适的视图进行渲染返回 Spring MVC 的运行流程 用户发送HTTP请求请求到达服务器后Spring MVC 的中央分发器拦截请求中央分发器根据 请求的路径找到对应的 HandlerMapping确定由哪个 Controller 控制器处理HandlerMaping 根据请求信息映射到对应的 Controller 然后返回给中央分发器中央分发器把请求交给对应的Controller 控制器Controller 是Spring MVC的一个组件它负责处理请求以及响应结果Controller 控制器调用合适的业务层或 Mapper 层获取数据Controller 把数据封装成一个ModelAndView对象然后返回给中央分发器中央分发器把ModelAndView对象传给 ViewResolverViewResolver 根据视图名称解析出一个 View 对象然后返回给中央分发器中央分发器把 view 对象渲染出来返回给客户端 在 手写 Spring IOC 的基础上再进行扩展手写一个 Spring MVC 二、实现步骤 1. DispatcherServlet 1. 创建一个中央分发器 package com.shao.MVC;import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class DispatcherServlet extends HttpServlet {Overridepublic void init(ServletConfig config) throws ServletException {System.out.println(dispatcherServlet 初始化);}Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(dispatcherServlet 开始执行任务了);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(dispatcherServlet doPost);}}拦截所有请求 在 Tomcat 的 web.xml 配置文件中配置自定义的中央分发器拦截所有请求 !DOCTYPE web-app PUBLIC-//Sun Microsystems, Inc.//DTD Web Application 2.3//ENhttp://java.sun.com/dtd/web-app_2_3.dtd web-appdisplay-nameArchetype Created Web Application/display-nameservletservlet-namedispatcherServlet/servlet-nameservlet-classcom.shao.MVC.DispatcherServlet/servlet-class/servletservlet-mappingservlet-namedispatcherServlet/servlet-nameurl-pattern//url-pattern/servlet-mapping/web-app测试 在地址栏随便输入一个请求中央分发器会进行拦截然后执行初始化和相关方法初始化只会执行一次 2. 接管 IOC 容器 在 手写 spring IOC 的时候为了方便测试是在 Servlet 的 doGet 方法中初始化 IOC 容器现在改为在中央分发器初始化的时候启动 IOC 容器 1. 创建配置文件 在配置文件中配置扫描包路径然后启动中央分发器的时候把配置文件传过去 2. 修改 web.xml 配置文件 3. 启动 IOC 容器 在中央分发器的初始化方法中启动 IOC 容器 package com.shao.MVC;import com.shao.IOC.ApplicationContext;import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.Properties;public class DispatcherServlet extends HttpServlet {// 存储 IOC 容器private ApplicationContext applicationContext;private Properties Prop new Properties();/*** 初始化*/Overridepublic void init(ServletConfig config) throws ServletException {System.out.println(dispatcherServlet 初始化);// 获取传过来的配置文件String configLocation config.getInitParameter(contextConfigLocation);String fileName configLocation.replace(classpath:, );// 调用 loadConfig 方法传入配置文件名返回扫描包路径String packagePath loadConfig(fileName);try {// 启动 IOC 容器applicationContext new ApplicationContext(packagePath);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(dispatcherServlet 开始执行任务了);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(dispatcherServlet doPost);}/*** 加载配置文件解析配置文件返回扫描包路径*/public String loadConfig(String path) {// 以流的方式加载配置文件InputStream resourceAsStream this.getClass().getClassLoader().getResourceAsStream(path);String basePackage ;try {// 解析配置文件中的属性,以键值对的方式存储到 Prop 中Prop.load(resourceAsStream);basePackage Prop.getProperty(basePackage);} catch (IOException e) {e.printStackTrace();}return basePackage;}}2. HandlerMapping HandlerMapping 根据注解的值映射到对应的 Controller 和方法 将 url 和 controller 里面的方法进行映射存到 HashMap 中key 是 url value 是一个对象这个对象有 url 对应的 controller 对象和对应的方法 1. 添加映射 1. 创建 RequestMapping 注解 2. 创建映射Bean package com.shao.MVC;import java.lang.reflect.Method;public class RequestMappingBean {/*** controller 对象*/private Object controller;/*** controller 的方法*/private Method method;public RequestMappingBean(Object controller, Method method) {this.controller controller;this.method method;}/*** 获取** return controller*/public Object getController() {return controller;}/*** 设置** param controller*/public void setController(Object controller) {this.controller controller;}/*** 获取** return method*/public Method getMethod() {return method;}/*** 设置** param method*/public void setMethod(Method method) {this.method method;}public String toString() {return RequestMappingBean{controller controller , method method };} }3. 使用 RequestMapping 注解 4. 添加映射 package com.shao.MVC;import com.shao.Annotation.Controller; import com.shao.Annotation.RequestMapping; import com.shao.IOC.ApplicationContext;import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Properties;public class DispatcherServlet extends HttpServlet {// 存储 IOC 容器private ApplicationContext applicationContext;private Properties Prop new Properties();private HashMapString, RequestMappingBean mappingMap new HashMap();/*** 初始化*/Overridepublic void init(ServletConfig config) throws ServletException {System.out.println(dispatcherServlet 初始化);// 获取传过来的配置文件String configLocation config.getInitParameter(contextConfigLocation);String fileName configLocation.replace(classpath:, );// 调用 loadConfig 方法传入配置文件名返回扫描包路径String packagePath loadConfig(fileName);try {// 启动 IOC 容器applicationContext new ApplicationContext(packagePath);} catch (UnsupportedEncodingException e) {e.printStackTrace();}// 添加映射AddRequestMapping();}Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(dispatcherServlet 开始执行任务了);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(dispatcherServlet doPost);}/*** 加载配置文件解析配置文件返回扫描包路径*/public String loadConfig(String path) {// 以流的方式加载配置文件InputStream resourceAsStream this.getClass().getClassLoader().getResourceAsStream(path);String basePackage ;try {// 解析配置文件中的属性,以键值对的方式存储到 Prop 中Prop.load(resourceAsStream);basePackage Prop.getProperty(basePackage);} catch (IOException e) {e.printStackTrace();}return basePackage;}/*** 添加映射* 1. 从 IOC 容器中获取所有带 RequestMapping 注解的 Controller 对象* 2. 获取 Controller 对象中带 RequestMapping 注解的方法* 3. 将 Controller 对象和方法封装为 RequestMappingBean 对象* 4. 构建映射关系key 是 urlvalue 是 映射Bean 对象包括 Controller 对象和方法*/public void AddRequestMapping() {// 获取 IOC 容器的 Bean MapHashMapString, Object beanMap applicationContext.getBeanMap();for (Object bean : beanMap.values()) {// 获取 bean 的 Class 对象Class? aClass bean.getClass();// 判断是否有 Controller 注解if (!aClass.isAnnotationPresent(Controller.class)) {continue;}// 判断是否有 RequestMapping 注解if (!aClass.isAnnotationPresent(RequestMapping.class)) {continue;}// 获取类的 RequestMapping 注解的值String basePath aClass.getAnnotation(RequestMapping.class).value();// 获取 Controller 对象中的所有方法Method[] methods aClass.getDeclaredMethods();for (Method method : methods) {// 判断方法上有没有带 RequestMapping 注解if (!method.isAnnotationPresent(RequestMapping.class)) {continue;}String path method.getAnnotation(RequestMapping.class).value();// 封装为 映射Bean 对象RequestMappingBean mappingBean new RequestMappingBean(bean, method);// 构建映射添加到 Map 中mappingMap.put(basePath path, mappingBean);}}System.out.println(映射添加完成);System.out.println(mappingMap);}}2. 处理映射 1. 创建 ResponseBody 注解 2. 创建一个 HTML 文件 3. 使用 ResponseBody 注解 4. 处理映射 为了方便测试只处理了 GET 方法的映射 package com.shao.MVC;import com.alibaba.fastjson2.JSON; import com.shao.Annotation.Controller; import com.shao.Annotation.RequestMapping; import com.shao.Annotation.ResponseBody; import com.shao.IOC.ApplicationContext;import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import java.net.URLDecoder; import java.util.HashMap; import java.util.Properties;public class DispatcherServlet extends HttpServlet {// 存储 IOC 容器private ApplicationContext applicationContext;private Properties Prop new Properties();private HashMapString, RequestMappingBean mappingMap new HashMap();/*** 初始化*/Overridepublic void init(ServletConfig config) throws ServletException {System.out.println(dispatcherServlet 初始化);// 获取传过来的配置文件String configLocation config.getInitParameter(contextConfigLocation);String fileName configLocation.replace(classpath:, );// 调用 loadConfig 方法传入配置文件名返回扫描包路径String packagePath loadConfig(fileName);try {// 启动 IOC 容器applicationContext new ApplicationContext(packagePath);} catch (UnsupportedEncodingException e) {e.printStackTrace();}// 添加映射AddRequestMapping();}Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(dispatcherServlet 开始执行任务了);// 处理请求HandlerMapping(req, resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(dispatcherServlet doPost);}/*** 加载配置文件解析配置文件返回扫描包路径*/public String loadConfig(String path) {// 以流的方式加载配置文件InputStream resourceAsStream this.getClass().getClassLoader().getResourceAsStream(path);String basePackage ;try {// 解析配置文件中的属性,以键值对的方式存储到 Prop 中Prop.load(resourceAsStream);basePackage Prop.getProperty(basePackage);} catch (IOException e) {e.printStackTrace();}return basePackage;}/*** 添加映射* 1. 从 IOC 容器中获取所有带 RequestMapping 注解的 Controller 对象* 2. 获取 Controller 对象中带 RequestMapping 注解的方法* 3. 将 Controller 对象和方法封装为 RequestMappingBean 对象* 4. 构建映射关系key 是 urlvalue 是 映射Bean 对象包括 Controller 对象和方法*/public void AddRequestMapping() {// 获取 IOC 容器的 Bean MapHashMapString, Object beanMap applicationContext.getBeanMap();for (Object bean : beanMap.values()) {// 获取 bean 的 Class 对象Class? aClass bean.getClass();// 判断是否有 Controller 注解if (!aClass.isAnnotationPresent(Controller.class)) {continue;}// 判断是否有 RequestMapping 注解if (!aClass.isAnnotationPresent(RequestMapping.class)) {continue;}// 获取类的 RequestMapping 注解的值String basePath aClass.getAnnotation(RequestMapping.class).value();// 获取 Controller 对象中的所有方法Method[] methods aClass.getDeclaredMethods();for (Method method : methods) {// 判断方法上有没有带 RequestMapping 注解if (!method.isAnnotationPresent(RequestMapping.class)) {continue;}String path method.getAnnotation(RequestMapping.class).value();// 封装为 映射Bean 对象RequestMappingBean mappingBean new RequestMappingBean(bean, method);// 构建映射添加到 Map 中mappingMap.put(basePath path, mappingBean);}}System.out.println(映射添加完成);System.out.println(mappingMap);}/*** 处理请求根据 url 找到对应的映射对象调用对应的方法返回结果*/public void HandlerMapping(HttpServletRequest req, HttpServletResponse resp) throws IOException {// 获取请求的路径这个请求路径中有项目名称String requestURI req.getRequestURI();// 获取项目名String contextPath req.getContextPath();// 去掉项目名String url requestURI.replace(contextPath, );// 获取 url 对应的映射对象RequestMappingBean mappingBean mappingMap.get(url);Object controller mappingBean.getController();Method method mappingBean.getMethod();Object res null;try {// 调用映射对象中的方法res method.invoke(controller);} catch (Exception e) {e.printStackTrace();}// 判断方法是否有返回内容if (res null) {return;}// 判断方法是否有 ResponseBody 注解if (method.isAnnotationPresent(ResponseBody.class)) {resp.setContentType(application/json;charsetutf-8);// 响应数据resp.getWriter().write(JSON.toJSONString(res));} else {// 获取编译后的项目根目录String path this.getClass().getClassLoader().getResource(../../).getPath();// 路径前面有一个 /比如 /D:/xxx需要去掉然后拼接静态资源名称String filePath path.substring(1) res;try {// 解码如果路径有空格或者中文会出现 16 进制的字符filePath URLDecoder.decode(filePath, UTF-8);} catch (UnsupportedEncodingException e) {e.printStackTrace();}// 获取静态资源内容byte[] fileContents StaticResourceHandler.getFileContents(filePath);// 获取文件媒体类型String mimeType StaticResourceHandler.getFileMimeType(filePath);resp.setContentType(mimeType ;charsetutf-8);// 响应内容resp.getWriter().write(new String(fileContents));}} }3. 测试 如果显示乱码可以添加以下命令试一下 -Dfile.encodingUTF-8
http://www.w-s-a.com/news/536890/

相关文章:

  • 天猫优惠券网站怎么做的网络连接
  • 保定网站建设多少钱公司网页网站建设+ppt模板下载
  • 用户上传商品网站用什么做建设跳转公积金网站
  • 买程序的网站上海市网站建设公司
  • 南通网站建设排名公司哪家好wordpress网站图片迁移
  • 河南省汝州文明建设门户网站博客网站建设源码
  • 单位建设网站的请示手机移动端网站案例
  • 国内做网站的企业网站结构有哪些类型
  • 南通网站建设制作公司苏州好的网站公司名称
  • 咸阳做网站开发公司哪家好珠海公司制作网站
  • 深圳网站建设好不好医疗网站前置审批
  • 做ic什么网站好安溪网站建设
  • 网站建设 慕课企业文化标语经典
  • 做短视频的网站都有哪些简约 时尚 高端 网站建设
  • 浦口区网站建设售后服务建设一个网站多少钱
  • 做个小网站大概多少钱广州h5网站
  • 360免费建站视频wordpress标签显示图片
  • 创建简易个人网站国外做网站被动收入
  • 轻定制网站建设网页培训哪个机构好
  • 青岛海诚互联做网站好吗计算机软件开发培训机构
  • 德钦网站建设如何在网站上做用工登记
  • 创意品牌网站云服务
  • 个人备案网站可以做商城展示如何制作网页二维码
  • 网站建设php教程视频百度seo 站长工具
  • 外包小程序两个相同的网站对做优化有帮助
  • 网站备案主体修改wordpress 导航图片
  • 怎么建设网站数据库用vs代码做网站
  • 运营企业网站怎么赚钱动漫制作专业概念
  • 宜春网站建设推广网络推广工作好干吗
  • 网站程序0day平顶山市做网站