学习javaweb的问题归集(那些在开发时遇见的坑):
一、session乱码问题:在用jsp传递中文参数的时候,即使使用了
request.setCharacterEncoding(“utf-8”);
response.setContentType(“text/html;charset=utf-8”);
还是会出现乱码,导致servlet无法访问。
解决办法:暂未找到,只是先不传递中文参数。
查询到解决办法(还没有学习到):
1. 就是先配置过滤器,又配置server.xml文件,都设置成GB2312的编码
2. 这样无论是post还是get方式的表单传值,中文都不会是乱码!
二、在练习User案例的时候报错(找不到包):
五月 02, 2017 11:43:39 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet RegistServlet threw exception
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:157)
at org.apache.commons.beanutils.BeanUtilsBean.<init>(BeanUtilsBean.java:117)
at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68)
at org.apache.commons.beanutils.ContextClassLoaderLocal.get(ContextClassLoaderLocal.java:153)
at org.apache.commons.beanutils.BeanUtilsBean.getInstance(BeanUtilsBean.java:80)
at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:433)
at com.itheima.web.RegistServlet.doGet(RegistServlet.java:44)
at com.itheima.web.RegistServlet.doPost(RegistServlet.java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:876)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:618)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1790)
at java.lang.Thread.run(Thread.java:744)
问题描述:显示找不到所需的jar包
问题原因:虽然在项目中导入了jar包,但是在tomcat的lib目录下并没有相应的jar包,所以在程序运行的时候会找不到jar包。
解决办法:拷贝相应的jar包到lib目录下。
打破砂锅问到底:为什么jar包不会自动被引入进tomcat的lib目录下?
在网上找到了解决办法
可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build Path Entries”,添加所有依赖的jar包,就可以在发布时自动发布外部依赖的jar包。
( 额外案例的问题:在做Cust案例的时候,报错空指针异常。 解决办法:以后将所需的包放在lib文件目录下,需要导入时直接右键包BuildPath即可,包的路径最好不要有中文。)
三、try/catch 代码块使用错误。
问题描述;
catch (Exception e) {
e.printStackTrace();
}throw new RuntimeException();
晕~将throw语句写在了catch语句以外,导致程序自动抛出异常。
解决办法:修改正确,throw 语句放在catch代码块中。以后要加强自己知识点的复习。