龙华公司做网站青岛室内设计公司排名

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

龙华公司做网站,青岛室内设计公司排名,企业网站建设策划书 前言,怎么做网站赚钱软件目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.RequestParam 二.RequestBody 三.PathVaribale 四.RequestHeader 五.CookieValue 3.4数据传递 3.5文件上传 4.注册Servlet三大组件 Servlet/Filter/Listener 5.切换为其他嵌入式Servlet容器 6.restFul Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 总结 只要静态资源放在类路径下 called /static (or INF/resources 访问 当前项目根路径/ 静态资源名 静态资源访问前缀 spring: mvc: static-path-pattern: /apesource/** 2.enjoy模板引擎 1.将页面保存在templates目录下 2.添加坐标 dependencygroupIdcom.jfinal/groupIdartifactIdenjoy/artifactIdversion5.0.3/version/dependency 3.开启配置(创建配置类) Configuration public class SpringBootConfig {Bean(name jfinalViewResolver)public JFinalViewResolver getJFinalViewResolver() { ​// 创建用于整合 spring boot 的 ViewResolver 扩展对象JFinalViewResolver jfr new JFinalViewResolver(); ​// 对 spring boot 进行配置jfr.setSuffix(.html);jfr.setContentType(text/html;charsetUTF-8);jfr.setOrder(0); ​// 设置在模板中可通过 #(session.value) 访问 session 中的数据jfr.setSessionInView(true); ​// 获取 engine 对象对 enjoy 模板引擎进行配置配置方式与前面章节完全一样Engine engine   JFinalViewResolver.engine; ​// 热加载配置能对后续配置产生影响需要放在最前面engine.setDevMode(true); ​// 使用 ClassPathSourceFactory 从 class path 与 jar 包中加载模板文件engine.setToClassPathSourceFactory(); ​// 在使用 ClassPathSourceFactory 时要使用 setBaseTemplatePath// 代替 jfr.setPrefix(/view/)engine.setBaseTemplatePath(/templates/); ​ ​// 更多配置与前面章节完全一样// engine.addDirective(…)// engine.addSharedMethod(…); ​return jfr;} } 4.编写代码 Controller RequestMapping(user) public class RequestController {RequestMapping(/wwt)public String successFound(){return success;} } 3.springMVC 3.1请求处理 RequestMapping 意义:处理用户的请求相似于doget与dopost 位置: 类上:一级目录 方法:二级目录 例如:user/save user/delete student/save student/delete 属性: value ,path 表示请求路径 method常量,此请求的类型(get,post),若不设置则此请求适配所有的请求方式 params 限制请求参数,例如params{msg1,msg2}表示请求路径中必须携带参数名为msg1与msg2的参数 注意:1.超链接默认发送的是get请求 2.所有请求所携带的参数格式均为key value DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 作用与RequestMapping一样只是请求方式不同语法相同。 RequestMapping可以点击查看源码 Target({ElementType.METHOD, ElementType.TYPE}) METHOD代表修饰方法,TYPE代表修饰类 3.2参数绑定 绑定的机制:SpringMVC 绑定请求参数的过程是通过把表单提交请求参数作为控制器中方法参数进行绑定的 一.支持数据类型: 1.基本类型参数 包括基本类型和 String 类型 1.发送请求中携带数据的key与方法参数的name必须一致 2.数据类型合法 RequestMapping(/show1)public String one(String msg1){System.out.println(msg1msg1);return success;} 2.POJO类型参数 包括实体类以及关联的实体类 RequestMapping(/show3)public String sendEmp(Emp emp){ //发送请求中携带数据的key与实体类的属性名必须一致System.out.println(emp);return success;} 嵌套实体类 RequestMapping(/show3)public String sendEmp(Emp emp){  //发送请求中携带数据的key与实体类的属性名必须一致System.out.println(emp);return success;} !–被嵌套的实体类对象的name使用 对象名.属性名 的方式 该属性名与发送请求中携带数据key必须一致–form action/one/show4 methodpost员工编号input typetext nameeidbr/员工姓名input typetext nameenamebr/员工性别input typetext nameesexbr/部门编号input typetext namedept.didbr/部门名称input typetext namedept.dnamebr/input typesubmit value发送请求/form 3.数组和集合类型参数 包括 List 结构和 Map 结构的集合包括数组 RequestMapping(/show5)public String sendMap(RequestParam Map map){//参数类型Map前需要添加RequestParam注解System.out.println(map);return success;} form action/one/show6 methodpost部门编号:input typetext namedidbr/部门名称input typetext namednamebr/员工编号1input typetext nameemps[0].eidbr/员工姓名1input typetext nameemps[0].enamebr/员工性别1input typetext nameemps[0].esexbr/员工编号3input typetext nameempMap[one].eidbr/员工姓名3input typetext nameempMap[one].enamebr/员工性别3input typetext nameempMap[one].esexbr/input typesubmit value提交a href/one/show7?nums1233nums234nums23432发送请求7/ah3使用 ServletAPI 对象作为方法参数/h3a href/one/show7发送请求8/a/form 4.使用 ServletAPI 对象作为方法参数 HttpServletRequest HttpServletResponse HttpSession java.security.Principal Locale InputStream OutputStream Reader Writer RequestMapping(/show8)public String show7(HttpServletRequest request, HttpServletResponse response){ ​ //       request.setCharacterEncoding(UTF-8); //       response.setCharacterEncoding(UTF-8);System.out.println(request);System.out.println(response);request.getParameter(msg1); ​HttpSession session     request.getSession();System.out.println(session);session.setAttribute(,);try {response.sendRedirect(重定向);} catch (IOException e) {e.printStackTrace();}ServletContext applaction  session.getServletContext(); ​return success;} 二.使用要求 1.发送请求中携带数据的key与方法参数的name必须一致 2.数据类型合法 3.3常用注解 springMVC常用注解 一.RequestParam 作用 把请求中指定名称的参数给控制器中的形参赋值。 如果页面标签名称和方法参数名称不一致可以使用此注解实现 属性 name属性设置参数名称 defaultValue属性设置默认值 required属性设置是否为必传 RequestMapping(show1)public String show1(RequestParam(value msg) String msg1){System.out.println(msg1msg1);return success;} ​RequestMapping(/show2)public String show2(RequestParam(msg) String msg1,RequestParam(msg2) String msg2){System.out.println(msg1msg1msg2msg2);return success;} 二.RequestBody 作用 用于获取请求体内容。直接使用得到是 keyvaluekeyvalue… 结构的数据,并可以转换为对象 属性 required是否必须有请求体。默认值是:true。 RequestMapping(/show3)public String show3(RequestBody Emp emp){System.out.println(emp);return success;} 三.PathVaribale 作用 用于绑定 url 中的占位符。例如请求 url 中 /delete/{id} 这个{id}就是 url 占位符。url 支持占位符是 spring3.0 之 后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志 属性 value用于指定 url 中占位符名称。 required是否必须提供占位符。 Restful是一种软件架构风格、设计风格而不是标准只是提供了一组设计原则和约束条件。 主要用于客户端和服务器交互类的软件基于这个风格设计的软件可以更简洁更有层次 更易于实现缓存机制等。 Restful风格的请求是使用“url请求方式”表示一次请求目的的HTTP 协议里面四个表示操作方式的动词如下  GET用于获取资源  POST用于新建资源  PUT用于更新资源  DELETE用于删除资源 例如  /users/1 GET 得到 id 1 的 user  /users/1 DELETE 删除 id 1 的 user  /users/1/新名/新性 PUT 更新 id 1 的 user  /users/新名/新性 POST 新增 user RequestMapping(/show4/{ename}/{eid})public String show4(PathVariable String ename,PathVariable String eid){System.out.println(enameenameeideid);return success;} ​RequestMapping(/show5/{name}/{id})public String show5(PathVariable(value name) String ename,PathVariable(value id) int eid){System.out.println(enameenameeideid);return success;} 四.RequestHeader 作用 用于获取请求消息头。 属性 value提供消息头名称 required是否必须有此消息头 RequestMapping(/show1)public String show1(RequestHeader(value name)String name){System.out.println(name);return success;} 五.CookieValue 作用 用于把指定 cookie 名称的值传入控制器方法参数。 属性 value指定 cookie 的名称。 required是否必须有此 cookie。 RequestMapping(/show2)public String show2(CookieValue(value JSESSIONID,required false)String id){System.out.println(id);return success;} 3.4数据传递 controller的返回值类型有两种Json和String String类型返回值作用 充当视图的逻辑名称默认页面跳转为请求转发方式 RequestMapping(/show01)public String show01(){System.out.println(成功响应show01);return success;} 2. 充当一次请求转发或重定向发送请求 RequestMapping(/show02)public String show02(){System.out.println(成功响应show02);return redirect:show01;}RequestMapping(/show03)public String show03(){System.out.println(成功响应show03);return forward:show01;} 3. 给session中存数据并返回前端 RequestMapping(/show04)public String show04(HttpServletRequest request){System.out.println(成功响应show04);Emp emp new Emp(11,wwt,男);request.getSession().setAttribute(emp,emp);return success;} Json类型返回值作用 将对象转换为json格式返回给前端 RequestMapping(/show02)ResponseBodypublic ListEmp shoe02(){Emp emp1 new Emp(12,wwt,男);Emp emp2 new Emp(13,wwt,男);Emp emp3 new Emp(14,wwt,男);ListEmp list new ArrayList();list.add(emp1);list.add(emp2);list.add(emp3);return list;} 3.5文件上传 该案例以七牛云为例 在springboot项目中导入七牛云需要坐标 !–导入七牛云需要坐标–dependencygroupIdcom.qiniu/groupIdartifactIdqiniu-java-sdk/artifactIdversion7.2.25/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion3.14.2/versionscopecompile/scope/dependencydependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.5/versionscopecompile/scope/dependencydependencygroupIdcom.qiniu/groupIdartifactIdhappy-dns-java/artifactIdversion0.1.6/versionscopetest/scope/dependency 2.配置七牛云相关信息 Configuration public class SpringBootConfig {Bean(name jfinalViewResolver)public JFinalViewResolver getJFinalViewResolver() {// 创建用于整合 spring boot 的 ViewResolver 扩展对象JFinalViewResolver jfr new JFinalViewResolver();// 对 spring boot 进行配置jfr.setSuffix(.html);jfr.setContentType(text/html;charsetUTF-8);jfr.setOrder(0);// 设置在模板中可通过 #(session.value) 访问 session 中的数据jfr.setSessionInView(true);// 获取 engine 对象对 enjoy 模板引擎进行配置配置方式与前面章节完全一样Engine engine JFinalViewResolver.engine;// 热加载配置能对后续配置产生影响需要放在最前面engine.setDevMode(true);// 使用 ClassPathSourceFactory 从 class path 与 jar 包中加载模板文件engine.setToClassPathSourceFactory();// 在使用 ClassPathSourceFactory 时要使用 setBaseTemplatePath// 代替 jfr.setPrefix(/view/)engine.setBaseTemplatePath(/templates/);// 更多配置与前面章节完全一样// engine.addDirective(…)// engine.addSharedMethod(…);return jfr;} } 3.写一个简单的文件上传页面 !DOCTYPE html html langen headmeta charsetUTF-8title文件上传/title /head bodyform action/file/show1 methodpost enctypemultipart/form-data用户名input nameuname/br图片input nameupic typefile/brinput typesubmit value上传/form /body /html 4.编写控制文件上传controller Controller RequestMapping(/file) public class fileController {RequestMapping(/show)public String show(){return index;}RequestMapping(/show1)public String file(String uname, MultipartFile upic, HttpServletRequest request){System.out.println(uname);System.out.println(upic);System.out.println(upic.getOriginalFilename());System.out.println(upic.getName());//方式1.将文件upic以流的方式写入当前服务器磁盘(应用服务器)//方式2.文件服务器七牛云//构造一个带指定 Region 对象的配置类Configuration cfg new Configuration(Region.autoRegion());//…其他参数参考类注释UploadManager uploadManager new UploadManager(cfg);//…生成上传凭证然后准备上传String accessKey FvHzx7X-XV_EJwLWin-8-AkozGAu8tR0_ELaSCcB;String secretKey DQSLg30LmmrlWuFGiRUKMxrw6l2169A0i-miKJZ7;String bucket db202407;//默认不指定key的情况下以文件内容的hash值作为文件名String key null;String name null;try {byte[] uploadBytes upic.getBytes();Auth auth Auth.create(accessKey, secretKey);String upToken auth.uploadToken(bucket);try {Response response uploadManager.put(uploadBytes, key, upToken);//解析上传成功的结果DefaultPutRet putRet new Gson().fromJson(response.bodyString(), DefaultPutRet.class);System.out.println(putRet.key);//获取文件名System.out.println(putRet.hash);//获取文件hash值name putRet.key;} catch (QiniuException ex) {Response r ex.response;System.err.println(r.toString());try {System.err.println(r.bodyString());} catch (QiniuException ex2) {//ignore}}} catch (Exception ex) {//ignore}request.getSession().setAttribute(picname,name);return success;} } 5.最后将它显示在页面上(通过enjoy模版引擎传递数据) !DOCTYPE html html langen headmeta charsetUTF-8title文件上传/title /head body成功上传div#(session.picname)/divimg srchttp://sgwh6dzed.hd-bkt.clouddn.com/#(session.picname) /body /html 4.注册Servlet三大组件 Servlet/Filter/Listener 而由于 Spring Boot 默认是以 jar 包的方式运行嵌入式Servlet容器来启动应用没有web.xml文件 Spring提供以下Bean来注册三大组件 配置类配置三大组件
Configuration public class MyMvcConfig {//注册Serlvet//替换WebServlet(urlPatterns /mySerlvet)Beanpublic ServletRegistrationBean doServlet(){ServletRegistrationBeanMyServlet bean new ServletRegistrationBean();bean.setServlet(new MyServlet());bean.setUrlMappings(Arrays.asList(/myServlet));bean.setLoadOnStartup(1);return bean;}//注册FilterBeanpublic FilterRegistrationBean doFilter(){FilterRegistrationBean filter new FilterRegistrationBean();filter.setFilter(new MyFilter());filter.addUrlPatterns(/);return filter;}//注册ListenerBeanpublic ServletListenerRegistrationBean doListener(){//关闭监听器切记不要点击红色按钮太暴力点击控制台左侧existServletListenerRegistrationBean listener new ServletListenerRegistrationBean();listener.setListener(new MyListener());return listener;} } (1) ServletRegistrationBean 注册自定义Servlet //WebServlet(/servlet) public class MyServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(进入servlet);resp.getWriter().println(h1Hello World!/h1);super.doGet(req, resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);} } (2) FilterRegistrationBean 注册自定义Filter //WebFilter(urlPatterns {/}) public class MyFilter implements Filter {Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(请求过滤);servletRequest.setCharacterEncoding(UTF-8);//分水岭filterChain.doFilter(servletRequest,servletResponse);servletRequest.setCharacterEncoding(UTF-8);System.out.println(响应过滤);} } (3) ServletListenerRegistrationBean 注册自定义Listener //WebListener public class MyListener implements ServletContextListener {Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println(执行listener初始化方法);ServletContextListener.super.contextInitialized(sce);}Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println(执行listener销毁方法);ServletContextListener.super.contextDestroyed(sce);} } 2. 如果使用传统 WebFilter…实现注册也可以 条件1.一定是自定义组件 2.启动类添加ServletComponentScan 5.切换为其他嵌入式Servlet容器 SpringBoot 默认针对Servlet容器提供以下支持 Tomcat默认使用 Jetty 支持长连接项目如聊天页面 Undertow : 不支持 JSP , 但是并发性能高是高性能非阻塞的容器
切换 Jetty 容器 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId!– 排除tomcat容器 –exclusionsexclusionartifactIdspring-boot-starter-tomcat/artifactIdgroupIdorg.springframework.boot/groupId/exclusion/exclusions/dependency!–引入其他的Servlet容器–dependencyartifactIdspring-boot-starter-jetty/artifactIdgroupIdorg.springframework.boot/groupId/dependency 嵌入式Servlet容器运行启动类就可启动或将项目打成可执行的 jar 包 优点简单、快捷 缺点默认不支持JSP、优化定制比较复杂使用定制器, 还需要知道 每个功能 的底层原理 外置Servlet容器配置 Tomcat, 将项目部署到Tomcat中运行 6.restFul REST 指的是一组架构约束条件和原则rest原则有部分组成: URL定位资源HTTP动词操作(GET, POST, PUTDELETE) 描述操作。 设计RESTful风格的API: 在RESTful风格的架构中 每个网址代表一种资源所以网址中不能有动词只能有名词。而且所 用的名词往往与数据库的表名对应。HTTP动词设计: GET (获取资源) POST (新建资源) PUT (更新资源客户端提供改变后的完整资源) DELETE (删除资源) 请求方式 含义 GET /zoos                                                    列出所有动物园 POST /zoos                                                 新建一个动物园 GET /zoos/ID                                               获取某个指定动物园的信息 PUT /zoos/ID                                               更新某个指定动物园的信息(提供该动物园的全部信息) DELETE /zoos/ID                                        删除某个动物园 GET /zoos/lD/animals                                  列出某个指定动物园的所有动物 DELETE /zoos/lD/animals/ID                       删除某个指定动物园的指定动物