项目总结体会
项目一:
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"/>