你好,我也是使用的Tomcat,但是访问页面必须输入完整的jsp文件存在的位置,我该如何修改?每次启动访问默认都是index.jsp
改下file.jsp里面的这一行
最好使用IDEA
File file = new File(pathname);
file.delete();
因为SpringMVC会自动匹匹配页面传递过来的参数的name属性和后台控制器中的方法中的参数名,如果参数名相同,会自动匹配;如果控制器中方法是封装的bean,会自动匹配bean中的属性,其实这种取值方式不需要用@ModelAttribute注解,只要满足匹配要求,也能拿得到值
Can not find the tag library descriptor for "http://java.sun.com/jsp/
jstl/core"
是因为你的jsp需要导入jstl.jar 包。这个包在课程中是没有介绍的。所以需要你自己去网上找下相关的配置
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
是的需要加上项目名,然后再跟Controller中定义的RequestMapping中的value,视频中没有action中没有加项目名称居然可以访问,不明白为什么??难道是配置文件又改了???
设计API接口的时候,你给定一个穿参数的方式,比如让前端传入一串json的字符串,这时候你在接口中就可以直接处理这一串字符串,比如将其转换为json格式数据然后解析出每一个字段的值。又或者,你直接设计成传入一个对象,当前端调用API接口的时候会传入你们约定好的参数,比如user注册的API,前端可以将表单中注册相关的一系列字段写入,然后通过API接口把参数传进来(当然,这些参数都是跟你设计的user对象对应的),这时候,后端接收到前端传入的参数,会自动把它装入user对象,此时你只需要对这个对象进行你想要的业务处理就行了。
不客气,能理解原因最好,用maven去管理jar包的话,maven它会自动去帮你找到关联的jar包,所以你只需要简单的在maven项目中配置pom.xml中的标签就好了,所以很少会出这种错误。
经过测试以下三种写法效果一致(我的eclipse和tomcat都在C盘, tomcat访问项目名为demo),(1)new File("C:\\demo\\pic\\", "123.jpg")
, (2)new File("\\demo\\pic\\", "123.jpg") ,(3)new File(request.getContextPath() + "\\pic\\", "123.jpg")
我试了一下,以上三种写法均在我的C盘创建了demo/pic目录,并且图片以名称123.jpg正确存储到其中。
当然如果在前面加一个点:new File(".\\demo\\pic\\", "123.jpg") , 我测试发现该文件夹被创建在eclipse的安装目录。。。。。也就是当前容器运行的目录,因为tomcat是在eclipse中启动的;若单独用tomcat安装目录下的bin目录里面的startup.bat启动,再次测试,你会发现创建的目录再bin目录里面,即bin/demo/pic/123.jpg
注意下,课程的文件里,file没有指明路径,我估计很多人会遇到这个404错误
可以进行转发。。。或者存session中。
个人理解:
1、标注了POST则这个接口就需要POST请求才能访问,GET请求也一样;如果不标注,则两种请求方式都可以访问。
2、一般接口设计中,需要做数据修改的接口使用POST请求,仅仅是获取数据的接口使用GET请求。相对来说,POST请求比GET请求安全性更高。
端口号后面加上项目名称试试,比如我的pom.xml根节点配置是<artifactId>spring-mvc-study</artifactId>,url就是:http://localhost:8080/spring-mvc-study/hello/mvc
这是我自己按照老师扒的源码地址:
https://github.com/20141211/firstspringmvc
个人觉得把return "success" 放到if里 外面是失败 这样就能很好的找到原因了
后缀名要在源文件里改,改完之后在<html></html>标签外加上
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
右键点击项目,点击properties ,然后点击Resource,就可以看到项目路径啦。。。
1、eclipse市场占用率目前比intelij idea要高,从而使用成本低
2、多年来大家对eclipse习惯了,大多数人觉得eclipse能应付,得心应手。
(我个人偏向intelij idea。相信只要使用过intelij的人都会再去使用eclipse了)
那就说明没有Commons-io这个Jar包,依赖没配置好。
1、建议使用base标签
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<base href="<%=basePath%>">
</head>
2、之后,你在页面上访问的所有资源,都会默认加上basePath的前缀。避免再次出现404的错误
跟jetty 是一样的 run命令
或者说你可以在pom中定义指什么生命周期执行run命令
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<excusions>
<excusion>
<phrase>package</phrase>
<goals>
<goal> run</goal>
</goals>
</excusion>
</excusions>
最后执行clean package命令就行了
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency>
这样就行了,已解决
<!--文件上传:multipartResolver处理器--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--编码格式--> <property name="defaultEncoding" value="UTF-8"/> <!--文件总和上限--> <property name="maxUploadSize" value="100000"/></bean>