Java web开发问题整理

原创 2017年09月17日 16:21:52

背景

近期开发过程中的简单问题,整理一下。

数据库字段类型选择

数据库设计过程中,选择合适的类型,可以极大提高磁盘空间的利用率。使用TokuDB数据库引擎的某张表的主键,由原来的128位的varchar类型,改为bigint类型后,相同数据规模下,发现数据库文件大小减少了一半。

效果非常明显:原来一亿条记录的字符串主键类型,需要7G左右磁盘空间,改为数值存储后,只需要3G左右的磁盘空间,大大减少了磁盘消耗。

启示:字段类型按需选择,MySQL的客户端HediSQL在编辑表字段时,可以看到各种类型所表示的数据范围。hour类型可以选择tinyint,端口类型smallint(正好跟端口号的0-65535一致)。还有其他的时间字段,字符串最大20即可。

Tomcat连接池问题

使用Tomcat数据源配置后,Java Web启动过程中会报mysql驱动jar包找不到,虽然已经将jdbc驱动添加到项目的lib目录下了,但是还是出现这个问题。

原因是Tomcat数据源是依赖jdbc的jar包的,所以还必须将其放在tomcat的lib目录下。但是使用其他数据源,就不需要再放在tomcat的lib目录了。

Spring配置文件

我们使用SpringMVC时,需要在web.xml中添加两个配置信息,SpringMVC的初始化配置信息和Spring的配置信息:

<!-- 初始化spring配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath*:config/applicationContext.xml
        </param-value>
    </context-param>
<!-- spring MVC初始化 -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:config/applicationContext-mvc.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

applicationContext-mvc.xml和applicationContext.xml文件,他俩的区别和联系是什么呢?前者是SpringMVC的初始化配置信息,后缀是Spring的Bean配置文件。

Spring作为一个Bean工厂,它需要管理所有配置的bean的信息,项目中所有需要的Bean都应该在该文件中定义,如果配置文件过多,可以分别写多个xml文件,然后在applicatonContext.xml使用resource标签引入,但是必须保证引入路径的正确。

SpringMVC,作为一个MVC框架技术,它的配置文件中主要是DispatcherServlet所需要的bean的配置,并利用它们来处理Request请求和生成相应的视图返回。

摘要算法的选择

项目中的密码存储方式是MD5摘要的16进制格式的数据,但是据说MD5算法已经被破解了,所以更换了另一种摘要生成算法SM3。

摘要算法,是不可逆的,并不存在解密之说,在数字签名中使用MD5,是为了保证数据的真实性、不可抵赖的特性。而加密算法的作用才是保证数据的完整性,通常加密算法都是可逆过程,需要解密得到明文数据的。

启示录

检查代码时发现一个单独配置spring-mail.xml中的Bean的定义又在applicationContext.xml文件中定义了一遍,而该文件中已经用resource引入了spring-mail.xml配置文件,但是被注释掉了。

仔细一看,才发现被注释掉的resource的配置路径错误了,修正后并删掉applicationContext.xml中关于spring-mail的bean配置,直接通过文件引用就可以了。

解决这个遗留问题后,就想到了spring和springMVC配置文件直接的区别和联系了。自己想想就想明白它们的区别和作用的。编码时间久了,有写技术用着用这顺带知其所以然了。书读百遍,其义自见,大概就是这种体验吧!

此外,喝水的时候果真不能思考,否则会忘记喝水而被呛着的,这也是程序员一大风险!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

IaaS,PaaS,SaaS 的区别

背景2017年5月20日的系统集成项目管理工程师考试上午选择题中,云计算的基础知识有两道云计算的概念和三种方式之间的辨别,印象中并没有选对。到底云计算的三个名词之间有什么区别呢?今天读了阮一峰先生的一...

常用的第三方SDK介绍(搜集中)

1.验证码 我们开发IT产品时经常要实现注册登录,现在很流行用短信验证码或者语音验证码的形式向客户端发送验证码。 我们开发人员估计都会选用现成的SDK接入实现。比如:创蓝中国 这家专做短信或者语音...
  • su_sai
  • su_sai
  • 2016年07月17日 18:36
  • 1780

Java web开发遇见的问题整理

Ⅰ、chrome控制台警告:Synchronous XMLHttpRequest on the main thread 解释:这个警告并不是错误,不是逻辑和代码错误;而是浏览器检测出来的一种不建议写...

Java Web开发常见问题.pdf

  • 2013年04月21日 03:50
  • 889KB
  • 下载

java web开发中的路径问题

  • 2011年12月08日 16:44
  • 33KB
  • 下载

Java Web开发工具配置 常见问题

问题一: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path ...

Java Web开发遇到的一系列问题总结

我是新手,这两天 就配置tomcat、安装tomcat插件tomcatplugin所遇到的一系列问题,怎么在eclipse 新建Dynamic Web Project,并且在浏览器运行,所涉及的一系列...

Java WEB开发中的中文乱码问题解决之终极之道

Java WEB开发中的中文乱码问题解决之终极之道 JavaWebServletJSP浏览器  [size=medium]每一个JAVA WEB开发者都会碰到乱码问题。本文阐述了JAVA WEB...

java web开发 高并发问题处理【总结】

java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据)一:高并发高负载类网站关注点之数据库没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤...
  • jiyanle
  • jiyanle
  • 2015年04月23日 21:50
  • 1233

Java web开发中的乱码问题

Java web开发中的乱码问题总结。一般的乱码问题包括:1)jsp页面中,中文显示乱码; 2)get请求中文参数传输到服务端乱码了; 3)post请求中文参数传输到服务端乱码了。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java web开发问题整理
举报原因:
原因补充:

(最多只允许输入30个字)