今天的主要工作:
编写菜品后台管理系统:C:\Program Files\apache-tomcat-8.0.52\webapps\foodManager
遇到的问题:
1:使用EL表达式出错。
2:food-add.jsp中表单提交到foodManager这个Servlet出错,找不到此程序,请求发送到了项目根目录页面。
3:jsp导入自定义的类失败。
4:表单提交菜品图片失败,报: C:\Program Files\apache-tomcat-8.0.52\webapps\foodManager(拒绝访问)错误。
5:Servlet转发到food-show.jsp页面出错,报:The server encountered an internal error that prevented it from fulfilling this request错误。
6:在food-show.jsp中展示图片失败。原因:点击打开链接。其中的解决方式我没有试,既然本地绝对路径不行,这里改为相对路径。
问题分析:
1:EL表达式暂且略过。
2:在jsp页面(可能也包括html页面),当使用路径时(比如href、action属性需要的值),绝对路径使用"http://...."(网络上的资源)、C:\...(本机上的资源)。
使用相对路径时(指向本项目时推荐使用),不要用“/”开头。“/”表示服务器目录。比如,项目为:foodManager。项目目录下的food-add.jsp目录使用action指向位于foofManager/WEB-INF/classes/foodManager.class这个Servlet,该servlet配置了参数:<url-pattern>/foodManager</url-pattern>(或者使用注解配置也可)。
那么action的值为:<form action="foodManager" method="post">(我理解就是指向的是同级目录下的food Manager)。当然也可以使用action="/foodManager/foodManager"。(这可以理解为从服务器目录下,找到了项目目录,再找到此servlet)。
3:JSP导入自定义的类时,这个类需要在包内。即类必须有package xxx;语句。原因未知。珍爱生命的话,就加个包吧。
4:servlet处理表单提交的文件时,需要把文件保存在一个文件夹中的话,使用part.write(url+"/"+文件名);如果没有加文件名,就会报错。
5:这个错误的原因是:把属性保存在了application中,但是用request调用了。。。就会报这个错误。
6:使用<img>时需要注意:src的引号在外,其中就不要使用连接符号和引号了。如此处可以写:
<img src="<%=this.getServletContext().getContextPath()%>/uploadFiles/<%=food.getUUIDFileName()"/>