jsp里新手常踩的一些坑

  1. 用Ajax发送异步请求到Servlet,用谷歌浏览器调试 不是404 not find就是返回一个500的状态码(内心是崩溃的)
    状态码为404 解决思路如下
    这里写图片描述
    进入web.xml检查Servlet信息的配置
    例如:新建了一个Se1414080902225Servlet.java的Servlet,
    这时我们需要进入web.xml里对Servlet的访问地址进行配置
<web-app>
  <servlet>
    <servlet-name>Se1414080902225Servlet</servlet-name>

    <display-name>This is the display name of my J2EE component</display-name>
    <description>This is the description of my J2EE component</description>
    <servlet-class>edu.hzu.javaweb.labs.se1414080902225.Se1414080902225Servlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Se1414080902225Servlet</servlet-name>
    <url-pattern>/Se1414080902225Servlet</url-pattern>
  </servlet-mapping>

</web-app>

这里写图片描述

在这边配置好了以后基本就不会出现状态码为404的情况了!

  1. 状态码500情况我了解的情况也不多,可能有如下原因:
    1. 写的Servlet程序没有放在src资源包下
    2. Servlet程序里出现了异常
对于写的Servlet程序没有放在src资源包下检查的方向:

使用MyEclipse作为开发工具,Tomcat作为Web服务器,项目一般部署在Tomcat下的webapps的目录下。具体来说主要用两种部署的路径:

一是将web项目中的webRoot下的文件直接拷贝到webapps/ROOT下;

另一种方法在Tomcat下的webapps中自动创建了以项目名称命名的文件夹,
并将整个项目所实用到的文件复制过去。在Tomcat安装目录下的webapps下自动创建的文件夹里我们可以看到Servlet类生成的.class文件。

对于第一部署方法,request.getContextPath()的返回值为空(即:"",中间无空格,注意区分null)。

可以使用 request.getContextPath()方法获取返回值为:/创建的文件夹的名称

  1. request.getParameter( )方法获取Ajax传送的数据一直为null的问题
    使用JQuery的Ajax的 post 请求
$(document).ready(function() {
        $('#subm').click(function(event){
            event.preventDefault();
            var grades=
            {
                "离散数学":$("#subject4").val(),
                "汇编语言":$("#subject6").val(),
                "大学英语4":$("#subject2").val(),
                "公共体育4":$("#subject3").val(),
                "数据库系统概论":$("#subject8").val(),
                "计算机组成原理":$("#subject5").val(),
                "马克思主义基本原理":$("#subject7").val(),
                "数据库系统课程设计":$("#subject1").val()
            };
            $.ajax(
                {
                   type: "POST",
                   url: "Se1414080902225Servlet",
                   data: grades,
                   dataType:'json',

                   success:function(data){
                        alert(data.result);
                   },
                   error:function(data){
                        alert(data.result);
                   },    
                });
        });
     });

jquery在执行post请求时,默认会设置Content-Type为application/x-www-form-urlencoded。
如果我们显式设置了Content-Type为其它类型,而不是application/x-www-form-urlencoded,
POST 请求是不会解析表单数据来放到 request parameter map 中,
所以通过 request.getParameter(name) 是获取不到想要的结果,所有调试时会发现 getParameter() 方法获取的结果一直为 null

感谢以下两位博主的博客:
关于JQuery的Ajax发送post请求与原生Ajax发送post请求的区别
http://blog.csdn.net/mhmyqn/article/details/25561535
关于web应用程序部署到Tomcat的详解
http://blog.sina.com.cn/s/blog_6cbe0cff0101j6jl.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值