项目总结体会

项目一:

1.涉及到的技术:

  1.1 使用的是SSM框架,springMVC作为controller,拦截url,myBatis连接mysql数据库,并写sql语句,spring整合各层组件;

    1.1.1 本项目springMVC的返回方式:void,String,Map(配合responseBody),void默认跳转到原页面,String可指定一个跳转页面,Map输出了一个Map格式的json串,

      返回原页面,SpringMVC自带ModelMap域,可存放数据,可以在对应页面获取数据,可在JS代码中获取

    1.1.2 myBatis使用接口开发,通过namespace将接口Mapper类和mapper.xml文件连接在一起,使用到了<if>,<where>标签及@Param注解

    1.1.3 spring仅用于整合各类框架,使用注解开发创建对象

  1.2 本项目使用了3种url跳转方式(表单提交,ajax,a标签链接跳转) ,url转发和url重定向

    1.2.1 表单提交后页面自动刷新,如果想要不刷新,可设置from属性target="submitFrame" <iframe name="submitFrame" style="display:none;" ></iframe>

    1.2.2 ajax所获得的数据只是作为数据交互,而不能跳转页面,

      1.2.2.1可以把ajax获取的数据存到表单字段中,然后用js表单提交,

      1.2.2.2也可以把ajax的数据放在链接后,?data="data"形式,如果是json串,可以encode,在后台中dencode,再把json穿转换为对象,获得http请求传过来的数据

      1.2.2.3也可以把数据存在数据库中,用一个唯一标识uuid传到前台页面,链接带着uuid跳转到另一个页面,

  function GetQueryString(name) {
      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
      var r = window.location.search.substr(1).match(reg);
      if (r != null) {
          return unescape(r[2]);
      }
      return null;
  }

 

        用GetQueryString(name)获取前一个链接的带来的参数名的值uuid,根据uuid从数据库中查询出数据填充

    1.2.3 a标签链接跳转时所带的参数只能显示在url后,不能隐藏

    1.2.4 根据项目需求使用url跳转方式和url转发和重定向

   1.3 对于通用型的代码进行重构,重用性的功能进行合并

   1.4 登录技术:本项目微信端利用session进行判定,因业务需求以及微信限制,不进行cookie和session的记住登录和自动登录

   

2.使用的接口:

  2.1 本项目微信端使用的接口为JS-SDK,该接口用于微信接口提供的图片上传,微信支付,获得微信用户的openId,此接口的调用需要在微信指定网站进行相关信息的

    获取和配置,如配置授权网站url,配置授权支付url,配置API密匙,获得APPID(公众号ID),APPSelect(公众号密匙),MchID(商户ID),APISecret(API密匙),AccessToken(只能在微信游览)等

  2.2  阿里云短信接口:该接口用于用户短信接收,需获得accessKeyId和accessKeySecret,并在阿里云配置短信模板

  2.3  扫描识别接口:需要获得appcode进行配置,通过路径和文件流读取图片,读取的图片进行base64编码,经过扫描识别获得的数据保存到一个对象中,用ajax取出对应信息,进行填充和拼接

3.其他:

  3.1微信端的文件下载:微信端的文件下载,通过跳转到下载页面,设置http请求头,和响应,或者对中文文件名进行URLEncoder.encode解码

  3.2 微信对于图片上传有大小限制,不能一次上传太多太大的图片,支持了H5的图片上传方法和微信接口的图片上传方法,两种方式都需要对图片进行base64格式的压缩,用h5自带的canvas进行base64压缩,压缩完成的数据存放在input的text中,注意: 此时图片不能和表单一起上传,input的file类型放在表单外,仅用于做压缩,点击时先发生ajax请求把base64压缩后的图片数据上传,再后台base64解码,上传到指定路径中用文件流输出,返回所需要的信息的,填充到表单并提交

  3.3 前台引入js代码的顺序会对js执行和页面布局有影响

   3.4 页面使用jsp比较方便,可以动态获取数据,用springMVC的modelMap封装数据 ,

  3.5 springMVC跳转html页面,(1)用重定向技术 return "redirect:dd/tt/1.html"

               (2)配置静态资源<mvc:resources mapping="/html/**" location="/WEB-INF/html/" cache-period="31556926"/> 
                把html文件放在WEB-INF/html/下,访问路径如 http://localhost/html/contact.html,同时注意web.xml中是否

                配置了<url-pattern>*.html</url-pattern>,如果配置了还是会跳到controller中的

               (3)controller配置:

                  spring-mvc.xml配置:

                      <bean id="viewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver"  p:prefix="/WEB-INF/html/" p:suffix=".html" />  

                  Java代码:

                      @RequestMapping(value = "/add", method = RequestMethod.GET)

                        public String toAddTest() {
                            return "addTest";
                        }

                      tomcat下测试一直是404

                      在web.xml中:

                        <servlet-mapping> 
                          <servlet-name>jsp</servlet-name> 
                          <url-pattern>*.html</url-pattern> 
                        </servlet-mapping>

                      SpringMVC访问html页面(spring 拦截器将其拦截,需配置静态资源)

                      spring-MVC配置文件:

                         <mvc:resources location="/html/" mapping="/html/*.html"/>

 

   

posted @ 2018-01-04 15:38  生根  阅读(263)  评论(0编辑  收藏  举报