zoukankan      html  css  js  c++  java
  • my-Life项目开发流程

    一:新建java web项目  (懂得使用gradle哦!)  

         1.http://www.cnblogs.com/xylle/p/5234380.html    

         2.新建项目后,然后新建module, 如果甲Module要使用乙Module的类,我们可以在gradle中编译乙Module的类。  实现导入! 

            你的问题:mapper语句!

         3. mybatis的@Param:此注解可以让sql语句语法更宽松!   #{}和${}都可以!   不然只能是#{}。

         4. 建表——》 写mapper文件(sql文件)、dao接口、domain;    

             注意还有数据库配置文件哦!     所以最重要的还是mybatis的配置文件和spring的配置文件哦!     spring整合mybatis;这个要好好的看看哦!

    二:重大突破

         1.我居然学会用mybatis generator生成JavaBean、mapper文件、接口了!  哈哈哈哈!       找回自信!你可以的!

             http://blog.csdn.net/wyc_cs/article/details/9023117

          http://blog.csdn.net/zhshulin/article/details/23912615

             配置好配置文件——》 java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

         2.我也学会了哦:  

             A. exploded archive (development mode) 这种叫开发模式这是直接把文件夹,jsp页面 ,classes等等移到tomcat 部署文件夹里面,进行加载部署 

                 B. Packaged Archive(production mode) 这种叫发布模式,这是先打成war包,再发布

    三:遇到的问题

         1.mapper文件的路径问题,找不到?   这时候代码提示就是调错利器了!  致伟大的IDE!

         2.看之前项目的package不就知道它需要什么包了吗?   9494

         3.generator生成的sql语句只有insert:   哦,没有设置主键哦!

         4.java区分: 双引号和单引号哦!   String:“”     char:‘’

                     

     四:项目搭建

         1.R工具类里的变量必须声明为final,@Requestmapping的value才不报错!     必须是常量(声明为final就没事了)

         2.vm文件居然可以在地址栏直接访问!   dream-heaven.vm

         3.问题描述:  web.xml没有读取到,项目是怎么启动的呢?        将青奥的build.gradle里面的东西copy进来就OK!

         4.log4j的配置文件复制进来就可以用?  居然这省事?   

         5.报错信息

        A:2016-11-08 17:59:23,706 ERROR (org.springframework.web.context.ContextLoader:331) - Context initialization failed

      org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'indexController' defined in file   [C:UsersAdministratorDesktoplifeclassesartifactssunwin.zhangdong.webexplodedsunwin.zhangdong.web-  1.0-  SNAPSHOT.warWEB-  INFcla  ssessunwinzhangdongwebcontrollerIndexController.class]: Post-processing failed of bean type [class sunwin.zhangdong.web.controller.IndexController]   failed; nested exception is java.lang    

            解决:将之前青奥项目的gradle的那个copy到gradle.build里面。   

         B: tomcat依旧报错:     org.apache.catalina.core.StandardContext startInternal SEVERE: Error                                                             listenerStart org.apache.catalina.core.StandardContextstartInternal 

                    SEVERE: Context [/******] startup failed due to previous errors 

            解决:http://xpenxpen.iteye.com/blog/1545648

        6. 地址栏请求没有进入断点? 什么鬼?   (Spring MVC模块哦)    Spring的试图解析!     (参照王金生的项目哦!哈哈,抄,你总会吧!)

           答:说明dispatcherServlet没有拦截到? 

     五:遇到的问题

        台阶一: 断点会影响tomcat的正常启动的哦!   

        台阶二: spring mvc的配置文件:视图的解析这里要好好的看下哦!     对配置文件的深入理解!  

        台阶三: web.xml 中的  dispatchServlet的url-pattern这个何解呢?   多个顺序执行? 

        台阶四: 伪静态

                   答:设置请求后缀名为html,控制器返回逻辑名,然后为逻辑名添加“.vm”后缀(spring mvc做视图的解析)!

        台阶五:视图无法解析,web.xml中的配置问题,路径没配对,没找到vm文件。    主控制器不用return哦! 

        台阶六:List<domain>的size打印出来,但domain的属性值为啥就没查不出来呢?    title属性查出来为null?   但content是有的哦!   什么情况?  

                   答:哦,原来是mapper文件里实体类和数据库表对应的时候字段搞错了!

       

     六:

       1.什么鬼? 之前项目是好的,突然访问就404了,用gradle刷一下,重启居然又好了?   

     七:web项目启动顺序:web容器——》spring 容器

     八:

          定义请求路径,资源没有return路径,返回的是ModelAndView,vm文件是如何找到的呢?

          还有页面死活解析不了velocity:$!R;  这是什么鬼?     href属性没有值?        哦哦,没有添加到http的session中,用spring的话:添加到modelMap里哦!  

    九:

        1.静态与非静态调用!  注意类名的大小写哦!

        2.增加代码流程:点击button,调用js方法,调用ajax提交表单!      请求被控制器拦截:控制器调用service方法——》service层调用dao方法

                              1.触发ajax, 请求参数准备好!  然后发送过去。

                              2.拦截请求,请求参数入参, 控制器内部调用service层方法,service的方法内部调用dao层的方法。 实现数据的CRUD!    

                                 so easy!复杂的地方框架都封装了!    真正有内容的地方:视图渲染、请求参数入参! 

            

        3.parsererror,  status: 200, statusText: "OK"     这是为什么呢?    

           答:哦,ajax参数url是空的,velocity没解析出来哦!  

    十:

        1.spring MVC的机制:控制器里可以带ModelMap哦! 盛装bean的容器!   spring创建的modelMap哦!

        2.404错误,ajax提交的url路径没有?  还是没被拦截?    哦哦,url为空,所以才找不到资源路径啊!

        3. R工具类里的请求路径?       P里面:定义视图文件的路径!

            视图的真实路径都是完整的目录哦!(相对目录)

        4.spring控制器处理请求:返回String、modelMap、modelAndView?    

        5. 500:Could not resolve view with name 'guidelines.find' in servlet with name 'spring-web'

            是不是因为文件目录太深了?  vm/../../文件位置。  初步断定是这样子的哦!     好像不是哦! vm文件夹下的.vm文件都会遍历到?

        6. 富文本编辑框的内容无法被表单序列化?  所以创建的时候内容没有!   查找王金生的哦!     看来好像不是得!去掉richtext照样没内容!

            form表单无法被序列化: 序列化值为空! 我了个擦!

            答:哦,表单的input元素必须有name属性哦! 不然无法传值的哦! 

        7. ajax创建记录后:数据库中没有值,应该是ajax请求参数绑定的时候出了问题!   所以domain的值为null!   

            ajax请求被拦截了,但是请求参数入参失败! 

    十一:  读项目代码

       1.ModelAndView?  必须return?    是的噢,或者将ModleMap作为方法的形参,这样就可以啦! 

       2.AjaxResult:    封装Ajax请求的响应消息   统一规范Ajax响应消息的内容

       3.参数如何传递到控制器中的?    springMVC的机制  

      

    十二:

    1.客户端与服务端的操作都是建立在: 发送请求——》 拦截处理请求——》生成并返回响应——》处理响应

    1.@RequestMapping可以在类上面配置哦!

    2.spring MVC:完成"http请求信息入参"(这一点非常的重要哦)

    Servlet API: 或者直接用HttpServletRequest request请求对象

    控制器返回值:ModelAndView(模型和逻辑视图名)、String(逻辑视图名)

    控制产生模型数据,而视图是为了渲染模型数据!(渲染:就是呈现方式) 各种文件格式

    @RequestParam('password'): 请求参数"按名称匹配方式"入参

    @RequestParam等等:方法签名!

    数据校验:在执行业务逻辑前要进行数据校验!

    Http请求报文到达服务器后,web服务器会将其封装成一个HttpServeltRequest对象。

    乱码的原因:velocity配置的问题? 很可能哦!(之前项目不是这样吗?)

    宏:批处理,多条指令合并!  完成一项任务!

    十三:

    1.项目启动首页报404,因为请求都没有被拦截哦!  没进控制器!

    2.css、js文件找不到!   $!basePath    文件路径写成绝对路径!这样就不会有问题了!

    十四:

    1.enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。   encode type  

    2.servlet用来处理请求! (晚饭后看看吧)

    3.移动端320px?

    4.表单:收集用户输入信息!

    对信息编码(在请求报文中),发送http请求报文到服务器端!

    服务端将请求报文封装为HttpServlet的实例! 后端以面向对象的方式操作!

    服务器端利用HttpServletResponse的实例,完成对响应报文的设置,然后发送回客户端!

    十五: 

    1.ajax创建那个终于搞定了啊! 哈哈哈! 原来是页面input的name属性必须设置为何domain一样的啊!    

       快乐是什么? 成功是什么?  就是得其所想! 自己强烈的想做成一件事,然后历经磨难终于柳暗花明,得到预期!   哈哈哈,哈哈哈!    加油,young man!  

    2. 406:客户端浏览器不接受所请求页面的 MIME 类型!

        答:解决方法: 因为请求时候的MIME类型是application/html;   相应的却是application/json!  

                             所以将请求时候的MIME类型改为application/json即可!      奇了怪了,就是按照王工的那个来大家你的啊! 

    3.错误的原因:jar包的版本依赖问题导致的哦! 

    十六:

    1.请求报400,看来是web.xml先处理的请求吧!      

        答:解决400,原来是请求参数不合法吧!  因为创建时间在转换过程中肯定出错了! 

    2. jquery:   $.each()  

    3. id为啥获取不到呢?   页面不显示?   和domain中的属性名不一样? 啥情况啊! 

        答:哦哦,访问类变量id的时候是调用那个它的getxx方法,此处的getInteger(), 改为getId()即可。

              undefined:未引入就先使用了哦!   必须先引入jquery,然后才能用jquery哦 !  (顺序又忘了注意)

    4. int和integer      

    5,guideMapper:500错误     Dao层:空指针异常;   数据库表id是自增长的,所以插入的时候就不能再包含id了,或者选择insertSelective。

    6.数据库update无效?    dao层的方法执行失败。     原来是id没有传递进去哦!  擦了!     

       好好利用debug功能吧!  看debug模板界面,不要只看代码后的输出!  还有打印出来就什么都知道了!   哦哦! 哈哈! 

       执行update、delete操作的时候一定要知道唯一标识此条记录的domain哦!  

    十七:  debug,所有的错误信息都要看一下哦,不要只看开头,以根错误为起点、重点,但解决不了就需结合下面的错误信息哦!

    1.擦了,突然间报一大堆错误!    bean无法创建?   http://blog.csdn.net/zzg1229059735/article/details/51320218

       nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [sunwin.zhangdong.dao.GuidelinesMapper]    found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations:      {@org.springframework.beans.factory.annotation.Autowired(required=true)}

      答:通过添加注解解决了,但又报错了,  原来是mapper文件里面一个单词被空格分开了,日。。。。。。。查了快整整一天。。。。。。

             mapper文件有错,导致无法创建dao层接口的实现类,所以无法完成dao  bean的创建,连锁反应! 

            依旧有错:BeanDefinitionStoreException     nested exception is java.lang.ArrayIndexOutOfBoundsException: 2675 

            再答:日,原来是注解搞得鬼,去掉@Qualifier("guidelinesMapper") 就好了!  

    2. 删除操作报406(ajax删除)    

        哦,老问题了,请求后缀改为.json就Ok了!

        然后居然还报错,哦,ajax的data参数你居然都写错了,很久不用的下场啊!     data:String或Object

    3. 日期的问题,日期在数据库中的格式,日期java类型?  

    十八:

    1.com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB    server version for the right syntax to use near '' at line 1

       a:表里的字段命名,有无和mysql的关键字冲突。

    十九:

    1.记得浏览器中打开页面,导航栏上面的页面icon图标哦!    <link rel="icon" href="../../favicon.ico">

    2.登录模块(数据合法性、合理性校验  抽空总结一下表单中常用的校验规则哦!

       java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

       答:因MySQL的时间类型datetime范围是1000-01-01 00:00:00 到 9999-12-31 23:59:59,所以报错。   

      逻辑思想:

      a:页面发起请求-》请求拦截——》交给指定的控制器处理请求——》然后返回逻辑视图(login页面),没有数据模型哦!

      b:填写表单信息(验证格式、长度),提交表单(定义目标url哦,请求方法),服务器拦截此请求,进行数据验证(用户名和密码都一致),如果匹配,则返回相应            的视图,

               并执行逻辑操作(记录用户登录日志   等等)。如果不匹配,则返回当前页的逻辑视图、数据模型(错误信息)。

          c:安全性补充:密码加密! 

               01:密码加密

         02:md5摘要   

               03:http://www.jb51.net/article/73292.htm

               04:摘要(散列算法,不可逆的)第一,同一输入得到的输出是唯一的;第二,输出的大小是固定的;第三:不可能从输出得到输入的任何信息。

               05:密码加密后还需加盐(这样更安全)。

               06:防暴力破解:图片验证码(一次消费)

          d:注意

        01:请求消息入参(页面input框的name属性和domain的属性名一致) 。 按名称(name)匹配哦!

                02:  需要在视图解析配置文件里配置哦,暴露session中的属性,velocity变量才能解析得到结果哦!   哎,你为什么要放到session中呢?  spring提供的也是

                       可以得啊,ModleAndView  ModelMap等等。

    3.注册模块(数据合法性、合理性校验

        a:页面发起请求 href——》请求拦截——》交给指定的控制器处理请求——》返回逻辑视图(注册页面) 同样没有数据模型哦!

      b:(非空校验、格式校验、长度校验)提交表单,后端校验:验证码校验、注册过的用户名应该不予注册,所以这里要判断用户名是否已经注册,

         最后将此信息更新到数据库的user表中哦! 即可!

        理解逻辑:用户名一定是唯一的,密码是可以重复的!      

        c: 补漏,service层抛出的方法控制器层的方法也要声明异常哦! throws!  

            MysqlDataTruncation: Data truncation: Data too long for column 'password' at row 1

             答:顾名思义,就是password的字段在数据库中的长度太短了哦 !

        d:思路决定出路: 读代码心得

      1.文件路径的问题,IDE认,但浏览器不认哦! 尤其是background属性的url。

      2.下路菜单组件:大盒子(触发button,下拉菜单列表)

      3.CDN

      4.注意文件导入的顺序:css存在样式的覆盖, js文件存在依赖。

      5.注意设置页面的min-height哦! 或者 设置footer为fixed定位。

      6.div ul li a

      7.下路单选框 在herf属性中写javascript代码

      想要做到:选中下拉框中的指定元素,那么就打开一个此option的url页面。

      当下拉框改变时(onchange事件),获取当前下拉框Dom对象的options属性(数组),获取指定的选中Dom的属性值。

      总结:onchange事件 + window.open(url) 关键是获取url!

      8.Meta http://www.jb51.net/web/70787.html (整理到博客哦)

      0:name属性和http-equiv属性

        a:元数据可以被使用浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 Web 服务调用。

        b:定义文档关键词,用于搜索引擎。<meta name="keywords" content="HTML, CSS, XML, XHTML, JavaScript">

        c:定义web页面描述:<meta name="description" content="Free Web tutorials on HTML and CSS">

        d:定义页面作者:<meta name="author" content="Hege Refsnes">

       http-equiv属性:

        a:每30秒刷新页面:<meta http-equiv="refresh" content="30">

        A、Expires(期限)

        B、Pragma(cache模式) 注意:这样设定,访问者将无法脱机浏览。

        C、Refresh(刷新) 自动刷新并指向新页面。

      9.图片的显示规则,搞清楚哦! 不要问为什么规则是这样!

      10.jqeury的高度函数等等!

      11.标签页激活:不能选其父元素哦! a

      12.前端:读取图片(都是请求) 必须知道请求的url是什么? 你要请求什么,总得告诉服务器吧!

      图片url、视频的url

      视频播放:通过url向服务器发起请求,然后服务器不停的发送数据给你,插件做的应该就是不断的发送请求、处理响应。

      13.图片上传:将图片文件保存到服务器指定目录,将地址保存到数据库服务器中。

      视频上传:同理吧!

      14.js中的参数问题哦! 看js教程,整理到博客哦!

      15.alert console.log() js调试利器哦! 别忘了!

      16.图片显示:

    二十:

    1.实现velocity变量是全局!   

           

                                                                         项目基础巩固 

     1.对返回内容的长度截取:  

           方式一:在java代码中做处理:servie、控制器java代码    substring()

              方式二:在vm页面做处理,用vm语法。  

    2. <script src="" charset=""></script>

    3.rest清除<input type="hidden"/>  hidden后就是默认了无法从界面上改其值,  reset本来就是让表单的值重置恢复到默认。 

         


                                  项目重难点突破

    架构技术方案:

      表现层: springMVC(web.xml配置文件、spring mvc配置文件)

      业务逻辑层:spring事务 (spring配置文件和mybatis配置文件的整合)

      数据访问层:mybatis (mapper文件、mybatis配置文件、mapper接口)

      日志:log4j

      开发工具:IntelliJ idea、git、svn、gradle、tomcat、jrebel


    项目的启动顺序:

      web容器启动——》spring容器

      web.xml ——》 springmvc.xml(表现层)、spring-mybatis.xml(业务逻辑+持久层)

      WEB容器的加载顺序是:ServletContext -> context-param -> listener(监听) -> filter(过滤) -> servlet(拦截)

      web.xml文件的学习: http://blog.csdn.net/believejava/article/details/43229361

    认知:

    1.spring:一个轻量级的IOC和AOP的容器框架!

    2.mybatis:半自动ORM框架

    3.控制器内部返回视图的逻辑名(视图的路径和文件名)(路径、后缀名自己配哦)

    参考的优秀资源:

    1.http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html  (mybatis的中文api)。

      http://www.mybatis.org/mybatis-3/  (mybatis的英文api)。

      本机桌面上的mybatis的pdf文档。

    2.http://www.admin10000.com/document/6436.html

    3.http://jinnianshilongnian.iteye.com/blog/1594806

                                  项目心得

    一:排错,解决问题的利器

    1.Debug

    2.打印出来:System.out   console.log()   alert()   

     

    二:本质的东西

    1. 文字内容的CRUD

    2. 图片的上传、下载、删除

    3. 视频的上传、下载、删除

    4. 以上资源访问性能的提升!(用户体验)  

    三:yes,就是这种感觉,这种费力解决问题后的感觉。  成就感,你需要的就是遇到问题去解决的能力,而不是退缩和逃避!  加油,骚年!  

          追求兴趣和事业的一致!   哈哈哈哈哈哈哈啊。。。。。。

          良性循环:一定要让自己走上!      解决问题——》增加信心和乐趣——》再去攻克更难的问题——》循环往复——》终成正果。

  • 相关阅读:
    2020软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    #数据挖掘与数据化运营实战#2.3数据挖掘技术以及在数据化运营中的应用
    #简单统计学#单样本t检验
    #简单统计学#加权平均数
    软件工程(2019)结对编程第二次作业
    软件工程(2019)结对编程第一次作业
    软件工程(2019)第三次个人作业
  • 原文地址:https://www.cnblogs.com/njqa/p/6007911.html
Copyright © 2011-2022 走看看