关于Servlet学习过程中的注意事项(分享自己犯过的错误,写给初学Servlet的小伙伴的几条建议)
关于Servlet学习过程中的注意事项(分享自己犯过的错误,写给初学Servlet的小伙伴的几条建议)
- 前言:最近在学习Servlet,总结了几个小问题,特地分享给大家,让大家不要犯这样的错误,也希望大家养成学会总结的好习惯,由于本人水平有限如果有什么错误还请指出,好让我进行及时的更改。
一、注意事项
以下的出现的问题是按照我的学习进度进行排列的,可能这些问题很简单但是我还是犯了很多次,所以特地总结出来。
(一) 忘记给Servlet类配置xml文件
这虽然是一个小问题,但是很多人可能写的时候会不注意这一点,补充一下Servlet类的文件配置格式:<servlet> <description></description> <servlet-name>ForwardOrIncudeServlet</servlet-name> <servlet-class>com.zuikc.servlet.ForwardOrIncudeServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ForwardOrIncudeServlet</servlet-name> <!-- 设置名称空间name-space test方便汇总和归类 --> <url-pattern>/test/ForwardOrIncudeServlet</url-pattern> </servlet-mapping>
(二) URL书写错误
重定向和表单的URL路径的格式是一样的,/表示tomcat的webapps文件下文件位置,需要手动输入后续的文件路径,例如/web/index.html。
转发和包含的路径中,最前面的/表示该项目所在的位置,不需要输入项目名,例如/index.html。在xml中的mapping的书写/也是表示当前项目路径下。
(三) 没有给Web页面设置单独的jar包文件
当初遇到这个的问题我竟然花了很长的时间去找bug,这个问题看似很小但是确实是很严重。其原理是没有将class文件加载到webapps所在的项目路径下的classes文件。那么会导致ClassNotFound的异常出现。这个问题必须要引起重视,如果一旦发现ClassNotFound的异常,那么基本上就是出现了这个问题。
(四) 忘记设置中文编码格式导致中文乱码
每次都是输入后发现乱码才及时明白,自己忘记设置中文乱码的过滤了。对于中文乱码的处理一定要养成良好的习惯。在这之前就设置一个过滤器过滤所有的request和response,将过滤路径设置成/*,然后设置request.setCharacterEncoding("utf-8")和设置response.setContentType("text/html; charset=utf-8")。
(五) 没有深入理解forward转发、include包含以及sendRedirect重定向的区别
- 因在写流程的过程中可能时常用到forward、include和sendRedirect。
- forward和include其实算一个方式,其都是通过ResquestDispatcher类的对象的方法来实现,其跳转后url都是不变的而且对于客户端来说都是相当于只是发出一个请求,可以获得第一个页面的request的页面的属性值。而forward和include的方式还是有区别的,forward的第一个Servlet页面会被第二个servlet页面覆盖。但是include就不会被覆盖而是两个页面信息同时出现。
- sendRedirect相当于另外一种方式,其是通过HttpServletResponse类的对象的方法来实现,其跳转后url是会发生变化的而且对于客户端来说相当于是发出了两次请求,而且直接是显示了第二次的页面。并且无法获取第一个页面的request的属性值。
(六) 注解格式写错
注解其本质也是一种接口,其实在真实开发中,很多地方都会直接用到注解去设置配置文件。在Servlet中其注解格式经常可能书写错误,以下是常用的格式:
//配置Servlet类的xml信息 @WebServlet(urlPatterns={"/AServlet1",loadOnStartup=5}) //配置Filter类的xml信息 @WebFilter(urlPatterns={"/abc/AServlet","/bcd/BServlet"})
二、总结分析
以上的问题出现的原因多半是跟自己的不良习惯有关,那么以下我们进行一下总结。
(一) 养成提前了解大纲的好习惯
在学习Servlet之前,了解下Servlet的学习大纲,推荐自己制作思维导图对知识形成整体的认识。
(二) 平时就需要养成严谨的编码习惯
个人理解严谨的编码习惯是书写代码的时候要多写注释,然后写的时候每写完一行大概检查一下,虽然这样的效率很低,但是对于降低bug出现几率很有效。
(三) 平时多总结自己的错误
起始很多的错误都是相通的,平时多注意总结自己的代码错误,那么这种类型的错误可能就不会经常出现了。
浙公网安备 33010602011771号