niebaohua 发表于 2019-11-6 12:34

使用IDEA遇到的一个坑

本帖最后由 niebaohua 于 2019-11-6 20:10 编辑


# 以下内容纯属猜测,小白勿轻信,具体原因不详,请大神试验一下。

## 使用IDEA的时候不要单独复制一个jsp文件(都不做任何改变)

   最近在学SpringMVC的时候, 碰到了一个问题

在index.jsp中写了 4个超链接

```html
      <ul align="center">
      <li><a href="${pageContext.request.contextPath}/test/add">增加</a></li>
      <li><a href="${pageContext.request.contextPath}/test/delete">删除</a></li>
      <li><a href="${pageContext.request.contextPath}/test/modify">修改</a></li>
      <li><a href="${pageContext.request.contextPath}/test/find">查询</a></li>
    </ul>
```

在控制器中

```java
package cn.test.controller;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;

import javax.servlet.http.HttpSession;

public class BaseController {

    @ModelAttribute
    public void isLogin(HttpSession session, Model model) throws Exception {
      if (session.getAttribute("user") == null){
            throw new Exception("没有权限");
      }
    }
}

```



```java
package cn.test.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/test")
public class ModelAttributeController extends BaseController {

    @RequestMapping("/add")
    public String add(){
      return "add";
    }


    @RequestMapping("/delete")
    public String delete(){
      return "delete";
    }

    @RequestMapping("/modify")
    public String modify(){
      return "modify";
    }

    @RequestMapping("/find")
    public String find(){
      return "find";
    }

}

```

## 问题: 这个5个jsp文件, 全是空的, 没有任何输出的页面, 点击添加可以正常跳到add.jsp, 但是其他页面就跳转不了了 会报404错误

- 我把后面4个jsp页面分别添加内容, 可以正常跳转访问.
- 当我又把内容都删除之后, 恢复到原来5个空白jsp的页面, 竟然还可以正常访问.
- 然后, 我将网页删除, 重新复制add.jsp, 改完名之后, 页面还是只有add.jsp可以正常访问



- 下面我把页面删除, 留一个add.jsp, 我将手动创建delete.jsp, modify.jsp, 复制modify.jsp为find.jsp.

结果: `除了find.jsp界面能正常访问, 其他界面都不能访问`

应该就是jsp文件没编译

## 解决方法:
- 1. 删除已经编译的文件, 重启服务器. (直接重启服务器是没用的)
- 2. 重启编译器
- 3. 在复制的那些页面, 随便添加一些内容, (重启服务器)

Love3295292 发表于 2019-11-6 12:54

emm....也许是你忘记重新编译啦?可以重新启动项目看看,或者使用热部署。

alterempty 发表于 2019-11-6 13:18

jsp需要重新编译的,换句话说,你应该重启一下

fyypll 发表于 2019-11-6 13:22

你在eclipse中也是这样啊,都需要关闭重开

sss521 发表于 2019-11-6 13:28

jsp是servlet,需要编译的

hilent 发表于 2019-11-6 13:51

本帖最后由 hilent 于 2019-11-6 13:52 编辑

不是我打击楼主,先别急着甩锅IDE,一知半解的,容易误导别人。
这个坑不是IDEA的,甚至可以说不是个坑。楼上说的很清楚了,jsp需要编译才能渲染,直接复制自然是不行的。。或许你该先查一下jsp的百科吧。

雨天晒太阳 发表于 2019-11-6 14:07

我也正好学习到SpringMVC这一部分!!!!1

niebaohua 发表于 2019-11-6 15:56

hilent 发表于 2019-11-6 13:51
不是我打击楼主,先别急着甩锅IDE,一知半解的,容易误导别人。
这个坑不是IDEA的,甚至可以说不是个坑。 ...

你好,我运行web项目,它们肯定都是编译过的,希望你们可以去试一下,我也希望知道真正的原因

niebaohua 发表于 2019-11-6 15:58

Love3295292 发表于 2019-11-6 12:54
emm....也许是你忘记重新编译啦?可以重新启动项目看看,或者使用热部署。

我每次修改之后都会重启服务器的,你们也别光看着,自己尝试尝试,毕竟我也不知道真正原因

最后的 发表于 2019-11-6 23:12

不关idea的事哦,这个可能是电脑太卡没有及时编译哦。idea那个tomcat里运行时重启一下或者把以前编译的包文件删了重启就可以的
页: [1] 2
查看完整版本: 使用IDEA遇到的一个坑