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

卓伊科技网站建设如何做宣传推广效果最好

卓伊科技网站建设,如何做宣传推广效果最好,敬请期待是什么意思,怎样做自己的公司网站一、SpringMVC概述 Spring MVC 是由Spring官方提供的基于MVC设计理念的web框架。 SpringMVC是基于Servlet封装的用于实现MVC控制的框架#xff0c;实现前端和服务端的交互。 1.1 SpringMVC优势 严格遵守了MVC分层思想 采用了松耦合、插件式结构#xff1b;相比较于我们封装的…一、SpringMVC概述 Spring MVC 是由Spring官方提供的基于MVC设计理念的web框架。 SpringMVC是基于Servlet封装的用于实现MVC控制的框架实现前端和服务端的交互。 1.1 SpringMVC优势 严格遵守了MVC分层思想 采用了松耦合、插件式结构相比较于我们封装的BaseServlet以及其他的一些MVC框架来说更灵活、更具扩展性 SpringMVC是基于Spring的扩展、提供了一套完善的MVC注解 SpringMVC在数据绑定、视图解析都提供了多种处理方式可灵活配置 SpringMVC对RESTful URL设计方法提供了良好的支持 1.2 SpringMVC本质工作 接收并解析请求处理请求数据渲染、响应请求 二、SpringMVC框架部署 2.1 基于Maven创建一个web工程 SpringMVC是一个web框架应用在web工程中 2.2 添加SpringMVC依赖 spring-contextspring-aspectsspring-jdbcspring-testspring-webspring-webmvc propertiesspring.version5.2.13.RELEASE/spring.version /propertiesdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-aspects/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion${spring.version}/version/dependency/dependencies2.3 创建SpringMVC配置文件 在resources目录下创建名为spring-servlet.xml的文件添加MVC命名空间 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:aophttp://www.springframework.org/schema/aopxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd!--IoC采用注解配置--context:annotation-config/context:component-scan base-packagecom.qfedu/!-- 声明MVC使用注解驱动 --mvc:annotation-driven//beans2.4 在web.xml中配置SpringMVC的前端控制器 SpringMVC提供了一个名为DispatcherServlet的类SpringMVC前端控制器用于拦截用户请求交由SpringMVC处理 ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdversion3.1servletservlet-nameSpringMVC/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:spring-servlet.xml/param-value/init-paramload-on-startup1/load-on-startup/servletservlet-mappingservlet-nameSpringMVC/servlet-nameurl-pattern/*/url-pattern/servlet-mapping/web-app三、SpringMVC框架使用 在SpringMVC中我们把接收用户请求、处理用户请求的类称之为Controlelr控制器 3.1 创建控制器 3.1.1 创建控制器类 创建一个名为com.qfedu.controllers的包包需要在Spring注解扫描的范围内 创建一个类无需做任何的继承和实现 在类上添加Controller注解声明此类为SpringMVC的控制器 在类上添加RequestMapping(url)声明此控制器类的请求url可以省略 Controller RequestMapping(/book) public class BookController {}3.1.2 在控制器类中定义处理请求的方法 在一个控制器类中可以定于多个方法处理不同的请求在每个方法上添加RequestMapping(url)用于声明当前方法请求的url Controller RequestMapping(/book) public class BookController {RequestMapping(/add)public void addBook(){System.out.println(---book akdd);}RequestMapping(/list)public void listBooks(){System.out.println(---book list);}}3.1.3 访问 http://localhost:8080/springmvc_demo2/book/add http://localhost:8080/springmvc_demo2/book/list 3.2 静态资源配置 静态资源就是项目中的HTML、css、js、图片、字体等 3.2.1 /* 和 / 的区别 /* 拦截所有的HTTP请求包括.jsp的请求都做为控制器类的请求路径来处理/ 拦截所有的HTTP请求但不包括.jsp的请求不会放行静态资源的请求html/css/js/图片 3.2.2 静态资源放行配置 在springMVC的配置文件添加如下静态资源放行的配置 !--配置静态资源放行-- mvc:resources mapping/css/** location/css// mvc:resources mapping/js/** location/js// mvc:resources mapping/imgs/** location/imgs// mvc:resources mapping/pages/** location/pages//3.3 前端提交数据到控制器 3.3.1 表单提交 表单提交输入框需要提供name属性SpringMVC控制器是通过name属性取值的 bodyh3添加图书/h3form actionbook/add methodpostp图书名称:input typetext//pp图书作者:input typetext//pp图书价格:input typetext//ppinput typesubmit value提交//p/form /body3.3.2 URL提交 URL提交 a hrefbook/add?bookNameJavaURL提交/a3.3.3 AJAX提交 AJAX提交请求行、请求头、请求体都可以用来传值 input typebutton valueajax提交 idbtn1/ script typetext/javascript srcjs/jquery-3.4.1.min.js/script script typetext/javascript$(#btn1).click(function(){var obj {};obj.bookName Java;obj.bookAuthor张三;obj.bookPrice 3.33;$.ajax({url:book/add,type:post,headers:{},contentType:application/json,data:obj,success:function(res){console.log(res);}});}); /script3.4 控制器接收前端提交的数据 3.4.1 RequestParam 接收请求行传值 表单提交URL提交$.ajax()请求的url传值.post()/.post()/.post()/.get()中的{}传值 **RequestParam**注解用于接收请求行传递的数据 前端提交数据 form actionbook/add methodpostp图书名称:input typetext namename//pp图书作者:input typetext nameauthor//pp图书价格:input typetext nameprice//ppinput typesubmit value提交//p /form控制器接收数据 /*接收请求行数据*/ RequestMapping(/add) public void addBook(RequestParam(name) String a,RequestParam(author) String b,RequestParam(price) double c){System.out.println(---book add);System.out.println(a);System.out.println(b);System.out.println(c); }注意如果控制器方法中接收数据的参数名与请求行传值的key一致则RequestParam注解可省略 RequestMapping(/add) public void addBook(String name,String author, double price){System.out.println(---book add);System.out.println(name);System.out.println(author);System.out.println(price); }3.4.2 RequestHeader接收请求头传值 ajax封装请求头数据 $.ajax({...,headers:{},... })**RequestHeader**注解用于接收请求行头传递的数据 前端 input typebutton valueajax提交 idbtn1/script typetext/javascript srcjs/jquery-3.4.1.min.js/scriptscript typetext/javascript$(#btn1).click(function(){$.ajax({url:book/list,type:post,headers:{token:wahahaawahaha},success:function(res){console.log(res);}});});/script控制器 RequestMapping(/list) public void listBooks(RequestHeader(token) String token){System.out.println(---book list); }3.4.3 RequestBody接收请求体传值 ajax封装请求体数据 $.ajax({...,contentType:application/json,data:obj,,... })**RequestBody**注解用于接收请求行头传递的数据 前端 input typebutton valueajax提交 idbtn1/script typetext/javascript srcjs/jquery-3.4.1.min.js/scriptscript typetext/javascript$(#btn1).click(function(){var obj {};obj.bookName Python;obj.bookAuthor杰哥;obj.bookPrice 2.22;var s JSON.stringify(obj); //将对象转换成JSON格式$.ajax({url:book/update,type:post,contentType:application/json,data:s, //如果data的值为json格式字符串contentType必须设置为application/jsonsuccess:function(res){console.log(res);}});});/scriptRquestBody 将前端请求体提交的JSON格式数据转换成Java对象依赖jackson包 导入jackson的依赖 dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.12.1/version /dependency控制器 RequestMapping(/update) public void update(RequestBody Book book){System.out.println(---book update);System.out.println(book); }3.5 控制器响应前端请求 3.5.1 控制器响应同步请求 同步请求form、超链接 处理同步请求的方法的返回类型定义为String或者ModelAndView以实现页面的跳转 返回类型为String 转发 RequestMapping(/add) public String addBook(String name, String author, double price){System.out.println(---book add);return /tips.jsp; }重定向 RequestMapping(/add) public String addBook(String name, String author, double price){System.out.println(---book add);return redirect:/tips.jsp; }返回类型为 ModelAndView 转发 RequestMapping(/add) public ModelAndView addBook(String name, String author, double price){System.out.println(---book add);ModelAndView modelAndView new ModelAndView(/tips.jsp);return modelAndView; }重定向 RequestMapping(/add) public ModelAndView addBook(String name, String author, double price){System.out.println(---book add);ModelAndView modelAndView new ModelAndView(redirect:/tips.jsp);return modelAndView; }3.5.2 控制器响应异步请求 异步请求ajax请求 使用response中的输出流进行响应 控制器方法的返回类型为void控制器方法添加 HttpServletResponse response参数在方法中通过response获取输出流使用流响应ajax请求 RequestMapping(/update) public void update(RequestBody Book book, HttpServletResponse response) throws IOException {System.out.println(---book update);System.out.println(book);//使用ObjectMapper将对象转换成JSON格式字符串String s new ObjectMapper().writeValueAsString(book);response.setCharacterEncoding(utf-8);response.setContentType(application/json);PrintWriter out response.getWriter();out.println(s);out.flush();out.close(); }直接在控制器方法返回响应的对象 控制器方法的返回类型设置为响应给ajax请求的对象类型在控制器方法前添加ResponseBody注解将返回的对象转换成JSON响应给ajax请求如果一个控制器类中的所有方法都是响应ajax请求则可以直接在控制器类前添加ResponseBody注解 RequestMapping(/update) ResponseBody public ListBook update() {System.out.println(---book update);ListBook books new ArrayListBook();books.add(new Book(1,Java,老张,2.22));books.add(new Book(2,C,老李,3.22));return books; }3.5.3 控制器响应同步请求的数据传递 对于同步请求的转发响应我们可以传递参数到转发的页面 返回类型为String: //1.在控制器方法中定义一个Model类型的参数 //2.在return页面之前向model中添加键值对添加的键值对就会被传递到转发的页面 RequestMapping(/add) public String addBook(String name, String author, double price,Model model){model.addAttribute(key1,value1);model.addAttribute(book,new Book(1,Java,老张,2.22));return /tips.jsp; }//除了使用Model对象传值外还可以直接使用HttpServletRequest对象 RequestMapping(/add) public String addBook(String name, String author, double price,HttpServletRequest request){request.setAttribute(key1,value1);request.setAttribute(book,new Book(1,Java,老张,2.22));return /tips.jsp; }返回类型ModelAndView: RequestMapping(/add2) public ModelAndView addBook2(String name, String author, double price){ModelAndView modelAndView new ModelAndView(/tips.jsp);modelAndView.addObject(key1,value1);modelAndView.addObject(book,new Book(1,Java,老张,2.22));return modelAndView; }3.6 解决中文乱码问题 3.6.1 前端编码 JSP页面 % page contentTypetext/html;charsetUTF-8 languagejava pageEncodingUTF-8 %HTML页面 meta charsetUTF-83.6.2 服务器编码 tomcat/conf/server.xml Connector port8080 protocolHTTP/1.1connectionTimeout20000redirectPort8443 URIEncodingUTF-8/3.6.3 设置SpringMVC的编码方式 在web.xml中配置SpringMVC编码过滤器的编码方式 filterfilter-nameEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-paraminit-paramparam-nameforceEncoding/param-nameparam-valuetrue/param-value/init-param /filter filter-mappingfilter-nameEncodingFilter/filter-nameurl-pattern/*/url-pattern /filter-mapping四、SpringMVC的请求处理流程 4.1 请求处理流程 SpringMVC通过前端控制器DispatcherServlet拦截并处理用户请求的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PrhcJROA-1639494012800)(imgs/1617257389694.png)] ① 前端发送请求被前端控制器DispatcherServlet拦截 ② 前端控制器调用处理器映射器HandlerMapping对请求URL进行解析解析之后返回调用给前端控制器 ③ 前端控制器调用处理器适配器处理调用链 ④ 处理器适配器基于反射通过适配器设计模式完成处理器(控制器)的调用处理用户请求 ⑤ 处理器适配器将控制器返回的视图和数据信息封装成ModelAndView响应给前端控制器 ⑥ 前端控制器调用视图解析器ViewResolver对ModelAndView进行解析将解析结果视图资源和数据响应给前端控制器 ⑦ 前端控制器调用视图view组件将数据进行渲染将渲染结果静态视图响应给前端控制器 ⑧ 前端控制器响应用户请求4.2 SpringMVC的核心组件 DispatcherServlet 前端控制器、总控制器 作用接收请求协同各组件工作、响应请求 HandlerMapping 处理器映射 作用负责根据用户请求的URL找到对应的Handler可配置 SpringMVC提供多个处理器映射的实现可以根据需要进行配置 HandlerAdapter 处理器适配器 作用按照处理器映射器解析的用户请求的调用链通过适配器模式完成Handler的调用 Handler 处理器/控制器 由工程师根据业务的需求进行开发作用处理请求 ModelAndView 视图模型 作用用于封装处理器返回的数据以及相应的视图ModelAndView Model View ViewResolver 视图解析器 作用对ModelAndView进行解析可配置 SpringMVC提供多个视图解析器的实现可以根据需要进行配置 View 视图 作用完成数据渲染 4.3 处理器映射器 不同的处理器映射器对URL处理的方式也不相同使用对应的处理器映射器之后我们的前端请求规则也需要发生相应的变化 SpringMVC提供的处理器映射器 BeanNameUrlHandlerMapping 根据控制器的ID访问控制器SimpleUrlHandlerMapping 根据控制器配置的URL访问默认 配置处理器映射器 在SpringMVC的配置文件中通过bean标签声明处理器映射器 配置BeanNameUrlHandlerMapping bean classorg.springframework.web.servlet.handler.BeanNameUrlHandlerMapping/bean配置SimpleUrlHandlerMapping bean classorg.springframework.web.servlet.handler.SimpleUrlHandlerMappingproperty namemappingspropsprop key/aaabookController/propprop key/bbbstudentController/prop/props/property /bean4.4 视图解析器 Spring提供了多个视图解析器 UrlBasedViewResolverInternalResourceViewResolver UrlBasedViewResolver 需要依赖jstl 添加JSTL的依赖 dependencygroupIdjavax.servlet/groupIdartifactIdjstl/artifactIdversion1.2/version /dependency配置视图解析器 bean idviewResolver classorg.springframework.web.servlet.view.UrlBasedViewResolverproperty nameviewClass valueorg.springframework.web.servlet.view.JstlView/property nameprefix value//property namesuffix value.jsp/ /beanInternalResourceViewResolver bean idviewResolver classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value//property namesuffix value.jsp/ /bean五、日期格式处理 5.1 在控制器中使用对象接收数据 前端 form actiontest/add methodpostp图书名称:input typetext namebookName//pp图书作者:input typetext namebookAuthor//pp图书价格:input typetext namebookPrice//ppinput typesubmit value提交//p /form后端 Controller RequestMapping(/test) public class TestController {RequestMapping(/add)//表单提交的多个数据在控制器方法中可以使用对象接收//但是提交的数据的key必须要与对象的属性名一致public String addBook(Book book){return /tips.jsp;}}5.2 日期格式处理 如果前端需要输入日期数据在控制器中转换成Date对象SpringMVC要求前端输入的日期格式必须为yyyy/MM/dd 如果甲方要求日期格式必须为指定的格式而这个指定格式SpringMVC不接受该如何处理呢 自定义日期转换器 5.2.1 创建自定义日期转换器 /**** 1.创建一个类实现Converter接口泛型指定从什么类型转换为什么类型* 2.实现convert转换方法*/ public class MyDateConverter implements ConverterString, Date {SimpleDateFormat sdf new SimpleDateFormat(yyyy年MM月dd日);public Date convert(String s) {Date date null;try {date sdf.parse(s);} catch (ParseException e) {e.printStackTrace();}return date;}}5.2.2 配置自定义转换器 !-- 声明MVC使用注解驱动 -- mvc:annotation-driven conversion-serviceconverterFactory/bean idconverterFactory classorg.springframework.format.support.FormattingConversionServiceFactoryBeanproperty nameconverterssetbean classcom.qfedu.utils.MyDateConverter//set/property /bean六、文件上传下载 6.1 SpringMVC框架部署 基于Maven创建web工程 添加SpringMVC所需的依赖 Spring:context aspects jdbc test web webmvc jackson 创建SpringMVC配置文件 在web.xml中配置SpringMVC的前端控制器 在web.xml中配置SpringMVC的编码过滤器 配置springmvc静态资源处理策略 6.2 文件上传 案例添加图书同时提交图书的封面图片 6.2.1 前端提交文件 表单提示方式必须为post表单enctype属性设置为multipart/form-data form actionbook/add methodpost enctypemultipart/form-datap图书名称:input typetext namebookName//pp图书作者:input typetext namebookAuthor//pp图书价格:input typetext namebookPrice//pp图书封面:input typefile nameimgFile//ppinput typesubmit value提交//p /form6.2.2 控制器接收数据和文件 SpringMVC处理上传文件需要借助于CommonsMultipartResolver文件解析器 添加依赖commons-io commons-fileupload dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.4/version /dependency dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.4/version /dependency在spring-servlet.xml中配置文件解析器 bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolverproperty namemaxUploadSize value10240000/property namemaxInMemorySize value102400/property namedefaultEncoding valueutf-8/ /bean控制器接收文件 在处理文件上传的方法中定义一个MultiPartFile类型的对象就可以接受图片了 Controller RequestMapping(/book) public class BookController {RequestMapping(/add)public String addBook(Book book, MultipartFile imgFile, HttpServletRequest request) throws IOException {System.out.println(--------------add);//imgFile就表示上传的图片//1.截取上传文件的后缀名,生成新的文件名String originalFilename imgFile.getOriginalFilename();String ext originalFilename.substring( originalFilename.lastIndexOf(.) ); String fileName System.currentTimeMillis()ext;//2.获取imgs目录在服务器的路径String dir request.getServletContext().getRealPath(imgs);String savePath dir/fileName; //3.保存文件imgFile.transferTo( new File(savePath));//4.将图片的访问路径设置到book对象book.setBookImg(imgs/fileName);//5.调用service保存book到数据库return /tips.jsp;}}6.3 文件下载 6.3.1 显示文件列表 list.jsp % page contentTypetext/html;charsetUTF-8 languagejava % htmlheadtitleTitle/title/head!-- 最新版本的 Bootstrap 核心 CSS 文件 --link relstylesheet hrefhttps://cdn.jsdelivr.net/npm/bootstrap3.3.7/dist/css/bootstrap.min.css integritysha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4VaPmSTsz/K68vbdEjh4u crossoriginanonymous!-- 可选的 Bootstrap 主题文件一般不用引入 --link relstylesheet hrefhttps://cdn.jsdelivr.net/npm/bootstrap3.3.7/dist/css/bootstrap-theme.min.css integritysha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp crossoriginanonymous!-- 最新的 Bootstrap 核心 JavaScript 文件 --script srchttps://cdn.jsdelivr.net/npm/bootstrap3.3.7/dist/js/bootstrap.min.js integritysha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa crossoriginanonymous/scriptbodyh4文件列表/h4div classrow idcontainer/divscript typetext/javascript srcjs/jquery-3.4.1.min.js/scriptscript typetext/javascript$.get(book/list,function(res){for (var i 0; i res.length; i) {var fn res[i];var htmlStr div classcol-lg-2 col-md-3 col-sm-4 col-xs-6div classthumbnailimg srcimgs/fn alt... div classcaptionpa href# classbtn btn-primary rolebutton下载/a/p/div /div /div;$(#container).append(htmlStr);}},json);/script/body /htmlBookController RequestMapping(/list) ResponseBody public String[] listImgs(HttpServletRequest request){//从imgs目录下获取所有的图片信息String dir request.getServletContext().getRealPath(imgs);File imgDir new File(dir);String[] fileNames imgDir.list();return fileNames; }6.3.2 实现文件下载 list.jsp var htmlStr div classcol-lg-2 col-md-3 col-sm-4 col-xs-6div classthumbnailimg srcimgs/fn alt... div classcaptionpa hrefbook/download?fnamefn classbtn btn-primary rolebutton下载/a/p/div /div /div;BookController RequestMapping(/download) public void downloadImg(String fname, HttpServletRequest request, HttpServletResponse response) throws Exception {//从imgs目录找到当前文件String dir request.getServletContext().getRealPath(imgs);String filePath dir/fname;FileInputStream fileInputStream new FileInputStream(filePath);response.setContentType(application/exe);response.addHeader(Content-Disposition,attachment;filenamefname);IOUtils.copy(fileInputStream, response.getOutputStream()); }七、统一异常处理 在我们的应用系统运行的过程中可能由于运行环境、用户操作、资源不足等各方面的原因导致系统出现异常HTTP状态异常、Exception如果系统出现了异常这些异常将会通过浏览器呈现给用户而这种异常的显示是没有必要因此我们可以在服务器进行特定的处理——当系统出现异常之后呈现给用户一个统一的、可读的的异常提示页面。 7.1 HTTP异常状态统一处理 HTTP Status 404 创建一个用于进行异常提示的页面404.jsp 在web.xml中进行配置 error-pageerror-code404/error-codelocation/404.jsp/location /error-page7.2 Java代码异常的统一处理 7.2.1 基于Servlet-api的处理 创建异常提示页面err.jsp 在web.xml中进行配置 error-pageexception-typejava.lang.NumberFormatException/exception-typelocation/err.jsp/location /error-page7.2.2 SpringMVC处理 使用异常处理类进行统一处理 ControllerAdvice public class MyExceptionHandler {ExceptionHandler(NullPointerException.class)public String nullHandler(){return /err1.jsp;}ExceptionHandler(NumberFormatException.class)public String formatHandler(){return /err2.jsp;}}八、拦截器 8.1 拦截器介绍 SpringMVC提供的拦截器就类似于Servlet-api中的过滤器可以对控制器的请求进行拦截实现相关的预处理和后处理。 过滤器 是Servlet规范的一部分所有的web项目都可以使用过滤器在web.xml配置可以使用注解能够拦截所有web请求 拦截器 是SpringMVC框架的实现只有在SpringMVC框架中才能使用拦截器在SpringMVC配置文件进行配置不会拦截SpringMVC放行的资源jsp\html\css… 8.2 自定义拦截器 8.2.1 创建拦截器 public class MyInterceptor1 implements HandlerInterceptor {//预处理方法public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(--------------预处理);EnumerationString keys request.getParameterNames();while (keys.hasMoreElements()){String key keys.nextElement();if(bookId.equals(key)){return true;}}response.setStatus(400);return false;}//后处理方法public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {modelAndView.addObject(tips,这是通过拦截器的后处理添加的数据);System.out.println(--------------后处理);} }8.2.2 配置拦截器 mvc:interceptorsmvc:interceptormvc:mapping path/book/query/mvc:mapping path/book/add/mvc:mapping path/student/**/mvc:exclude-mapping path/student/add/bean classcom.qfedu.utils.MyInterceptor1//mvc:interceptor /mvc:interceptors8.3 拦截器链 将多个拦截器按照一定的顺序构成一个执行链 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XHv4rqsX-1639494012803)(imgs/1617334128888.png)] 九、SSM整合 9.1 创建web项目 创建maven工程 修改pom文件 packagingwar/packaging完成maven工程web项目结构 添加web项目依赖 dependencygroupIdjavax.servlet/groupIdartifactIdjsp-api/artifactIdversion2.0/versionscopeprovided/scope /dependencydependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion4.0.1/versionscopeprovided/scope /dependency配置服务器运行环境 9.2 部署MyBatis 添加MyBatis依赖 !-- mysql驱动 -- dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.47/version /dependency!-- mybatis依赖 -- dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.4.6/version /dependency!-- lombok -- dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.16/versionscopeprovided/scope /dependency创建MyBatis配置文件mybatis-config.xml ?xml version1.0 encodingUTF-8 ? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd configuration/configuration9.3 部署Spring、SpringMVC 9.3.1 添加依赖 propertiesspring.version5.2.13.RELEASE/spring.version /properties!--context-- dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version /dependency !--aspects-- dependencygroupIdorg.springframework/groupIdartifactIdspring-aspects/artifactIdversion${spring.version}/version /dependency !--jdbc-- dependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion${spring.version}/version /dependency !--test-- dependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion${spring.version}/version /dependency !--web-- dependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion${spring.version}/version /dependency !--webmvc-- dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion${spring.version}/version /dependency !--jackson-databind-- dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.12.1/version /dependency 9.3.2 创建Spring配置 多配置文件分开配置 spring-context.xml 只配置注解声明、以及类的管理 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd!-- 声明使用注解配置 --context:annotation-config/!-- 声明Spring工厂注解的扫描范围 --context:component-scan base-packagecom.qfedu//beansspring-mvc.xml 进行mvc相关的配置例如静态资源配置、拦截器配置等 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd!--声明MVC使用注解配置--mvc:annotation-driven//beansspring-mybatis.xml 进行Spring与MyBatis整合相关的配置 beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:txhttp://www.springframework.org/schema/txxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd/beans9.3.3 配置SpringMVC前端控制器 在web.xml进行配置 servletservlet-namespringmvc/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:spring-*.xml/param-value/init-paramload-on-startup1/load-on-startup /servlet servlet-mappingservlet-namespringmvc/servlet-nameurl-pattern//url-pattern /servlet-mapping9.4 整合配置(IoC) 9.4.1 导入mybatis-spring依赖 !-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -- dependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion1.3.2/version /dependency9.4.2 配置druid连接池 添加druid依赖 dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.10/version /dependency创建druid.properties,并配置 druid.drivercom.mysql.jdbc.Driver druid.urljdbc:mysql://localhost:3306/db_2010_mybatis?characterEncodingutf-8 druid.usernameroot druid.passwordadmin123## 连接池参数 druid.pool.init1 druid.pool.minIdle3 druid.pool.maxActive20 druid.pool.timeout30000在spring-mybatis.xml配置数据源 context:property-placeholder locationclasspath:druid.properties/bean iddruidDataSource classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName value${druid.driver}/property nameurl value${druid.url}/property nameusername value${druid.username}/property namepassword value${druid.password}/property nameinitialSize value${druid.pool.init}/property nameminIdle value${druid.pool.minIdle}/property namemaxActive value${druid.pool.maxActive}/property namemaxWait value${druid.pool.timeout}/ /bean9.4.3 配置SqlSessionFactory 在spring-mybatis.xml配置 bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdruidDataSource/property namemapperLocations valueclasspath:mappers/*.xml/property nametypeAliasesPackage valuecom.qfedu.bean/property nameconfigLocation valueclasspath:mybatis-config.xml/ /bean9.4.4 配置MapperScannerConfigurer 在spring-mybatis.xml配置 bean classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namesqlSessionFactoryBeanName valuesqlSessionFactory/property namebasePackage valuecom.qfedu.dao/ /bean9.5 整合配置AOP 使用Spring提供的事务管理完成DAO操作的事务管理 基于注解的事务管理配置 将Spring提供的事务管理切面类配置到Spring容器 bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdruidDataSource/ /beantx:annotation-driven transaction-managertransactionManager/9.6 整合测试 9.6.1 完成User的查询操作 创建实体类 Data NoArgsConstructor AllArgsConstructor ToString public class User {private int userId;private String userName;private String userPwd;private String userRealname;private String userImg;}在DAO包中创建接口 public interface UserDAO {public User queryUserByName(String name);}在mappers目录下创建映射文件 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.qfedu.dao.UserDAOresultMap iduserMap typeUserid columnuser_id propertyuserId/result columnuser_name propertyuserName/result columnuser_pwd propertyuserPwd/result columnuser_realname propertyuserRealname/result columnuser_img propertyuserImg//resultMapselect idqueryUserByName resultMapuserMapselect user_id,user_name,user_pwd,user_realname,user_imgfrom userswhere user_name#{userName}/select/mapper9.6.2 对DAO单元测试 添加junit、spring-test依赖 dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope /dependency创建测试类 RunWith(SpringJUnit4ClassRunner.class) ContextConfiguration({classpath:spring-context.xml,classpath:spring-mvc.xml,classpath:spring-mybatis.xml}) public class UserDAOTest {Resourceprivate UserDAO userDAO;Testpublic void queryUserByName() {User user userDAO.queryUserByName(wangwu);System.out.println(user);} }
http://www.zqtcl.cn/news/263154/

相关文章:

  • 国外企业网站建设模型网站建设谈客户说什么
  • 肖港网站开发公司网站的用途
  • 百度网站置顶怎么做效果图制作设计
  • 自适应企业网站用什么框架做重庆在线观看
  • 网站做301重定向的作用辽宁网站建设电话
  • 抚州市建设局官方网站高端网页设计人才
  • 移动商城网站建设 深圳北京网站建站公
  • 网站的对比免费网站建设排名
  • 织梦做的网站别人提交给我留的言我去哪里看怎样发展网站
  • 滨州公司网站建设推广地下城做解封任务的网站
  • 做国外的众筹网站北京的网站建设公司哪家好
  • 网站建设费用一年多少钱商洛城乡建设局网站
  • 网站视觉设计原则四个商城建设
  • WordPress站点添加ssl证书网站在百度无法验证码怎么办
  • 做ppt图片用的网站有哪些问题搭建网站合同
  • 杭州网站建设推荐q479185700上墙网站推广费用入什么科目
  • 天津网站建设 熊掌号设计网站大全
  • 网站建设不力 被问责上海传媒公司有哪些
  • 在线购物网站的设计阿里巴巴网站建设
  • 宿迁网站制作公司河北省建设工程协会网站
  • 美丽寮步网站建设做招聘的网站有哪些内容
  • 服装商店的网站建设要求企业所得税率
  • 南联网站建设公司注册企业查询
  • 商业网站的网址买网站服务器吗
  • 专业的单位网站开发网站开发和网页开发有什么区别
  • 电子商务网站建设 概念免费网页设计制作网站
  • 柳州做网站设计的公司游戏界面设计图片
  • 网站建设属于无形资产吗网站开发工程师 下载
  • 湖北城乡建设部网站首页推广电子商务网站的案例
  • 做地方网站如何盈利电脑上怎样进入中国建设银行网站