会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题

老师我在第一个项目里面按照视频里的代码启动Tomcat然后清空控制台访问attr.do的实现效果是这样的


image.png

但是当我在另一个项目里练习的时候发现清空控制台再访问attr.do就是这样的,我什么不是和上面的实现效果一样呢

没有打印出输出语句


image.png


    listener

package com.bjsxt.listener;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;

/**
 * ServletContext对象属性操作监听器
 */
public class ServletContextAttrListener implements ServletContextAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent scae) {
        System.out.println("--------------Added Start----------------");
        System.out.println(scae.getName()+"-----"+scae.getValue());
        System.out.println(scae.getServletContext());
        System.out.println("---------------Added Ended---------------");
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae) {
        System.out.println("--------------Removed Start----------------");
        System.out.println(scae.getName()+"-----"+scae.getValue());
        System.out.println(scae.getServletContext());
        System.out.println("---------------Removed Ended---------------");
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae) {
        System.out.println("--------------Replaced Start----------------");
        System.out.println(scae.getName()+"-----"+scae.getValue());
        System.out.println(scae.getServletContext());
        System.out.println("---------------Replaced Ended---------------");
    }
}


servlet

package com.bjsxt.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/attr.do")
public class ServletContextAttrServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        //编写触发监听器的三个方法
        servletContext.setAttribute("key","临江仙");
        servletContext.setAttribute("key","ITBZ");
        servletContext.removeAttribute("key");
    }
}


image.png



















JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 1411楼

老师我还是没有发现问题在哪,报错信息又添加了一行和EncodingFilter第33行有关,我就很郁闷了,而且我发现把EncodingFilter的第33行注释掉之后就浏览器就没有任何响应信息呈现一个空白页面,实在没有头绪了,请老师指点

image.png

image.png

报错信息如下:

Type 异常报告

消息 org.apache.tomcat.util.http.fileupload.impl.InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null

描述 服务器遇到一个意外的情况,阻止它完成请求。

Exception

javax.servlet.ServletException: org.apache.tomcat.util.http.fileupload.impl.InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
	org.apache.catalina.connector.Request.parseParts(Request.java:2913)
	org.apache.catalina.connector.Request.getParts(Request.java:2775)
	org.apache.catalina.connector.Request.getPart(Request.java:2944)
	org.apache.catalina.connector.RequestFacade.getPart(RequestFacade.java:1105)
	com.bjsxt.servlet.FileUpLoadServlet.doPost(FileUpLoadServlet.java:32)
	com.bjsxt.servlet.FileUpLoadServlet.doGet(FileUpLoadServlet.java:20)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	com.bjsxt.filter.EncodingFilter.doFilter(EncodingFilter.java:33)

Root Cause

org.apache.tomcat.util.http.fileupload.impl.InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
	org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.init(FileItemIteratorImpl.java:140)
	org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.getMultiPartStream(FileItemIteratorImpl.java:194)
	org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.findNextItem(FileItemIteratorImpl.java:213)
	org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.<init>(FileItemIteratorImpl.java:131)
	org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:255)
	org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:279)
	org.apache.catalina.connector.Request.parseParts(Request.java:2873)
	org.apache.catalina.connector.Request.getParts(Request.java:2775)
	org.apache.catalina.connector.Request.getPart(Request.java:2944)
	org.apache.catalina.connector.RequestFacade.getPart(RequestFacade.java:1105)
	com.bjsxt.servlet.FileUpLoadServlet.doPost(FileUpLoadServlet.java:32)
	com.bjsxt.servlet.FileUpLoadServlet.doGet(FileUpLoadServlet.java:20)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	com.bjsxt.filter.EncodingFilter.doFilter(EncodingFilter.java:33)

):注意 主要问题的全部 stack 信息可以在 server logs 里查看


源码如下:

EncodingFilter:

package com.bjsxt.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * 处理请求编码Filter
 */
public class EncodingFilter implements Filter {
    //多线程下使用成员变量不安全,但只用来读取就不存在安全问题,就怕又读又写
    private String encoding;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        //根据name取对应的valuie
        String code = filterConfig.getInitParameter("code");
        //赋值给成员变量
        this.encoding = code;
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        if(encoding==null){//说明web.xml中没有设置编码格式
            //设置请求编码    默认的编码
            servletRequest.setCharacterEncoding("utf-8");
        }else{
            servletRequest.setCharacterEncoding(this.encoding);
        }

        System.out.println("Encoding    Filter........");

        //filterChain.doFilter(servletRequest,servletResponse);

    }

    @Override
    public void destroy() {

    }
}



FileUpLoadServlet:

package com.bjsxt.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.UUID;

@WebServlet("/fileupload.do")
@MultipartConfig
public class FileUpLoadServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //如果表单里有中文,设置请求编码
        req.setCharacterEncoding("utf-8");
        //设置响应编码
        resp.setContentType("text/html;charset=utf-8");
        //获取表单里面文件描述的值
        String desc = req.getParameter("desc");
        //返回part类型对象
        Part part = req.getPart("file");//参数给form表单中文件上传的name
        /*//获取文件上传的字节流
        InputStream inputStream = part.getInputStream();*/
        //给文件改名     随机生成唯一的字符串+文件扩展名
        String fileName = UUID.randomUUID().toString() + part.getSubmittedFileName().substring(part.getSubmittedFileName().lastIndexOf("."));
        //路径转换
        ServletContext servletContext = this.getServletContext();
        //把相对于webapps目录下的相对路径转换成绝对路径
        String realPath = servletContext.getRealPath("images/" + fileName);
        //将上传的对象做IO流处理,并通过字符输出流写到路径中
        part.write(realPath);

        PrintWriter out = resp.getWriter();
        /*拼接HTML页面*/
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");
        out.println("文件上传成功!"+desc);
        out.println("</BODY>");
        out.println("</HTML>");

        out.flush();
        out.close();
    }
}


image.png

















JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 1412楼

老师我这个代码第一遍跟着老师敲是没有问题的,我在另一个项目里面又试了一遍老是说我的post方法的enctype有问题,可是我设置了呀,老师我该怎么解决


Type 异常报告

消息 org.apache.tomcat.util.http.fileupload.impl.InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null

描述 服务器遇到一个意外的情况,阻止它完成请求。

Exception

javax.servlet.ServletException: org.apache.tomcat.util.http.fileupload.impl.InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
	org.apache.catalina.connector.Request.parseParts(Request.java:2913)
	org.apache.catalina.connector.Request.getParts(Request.java:2775)
	org.apache.catalina.connector.Request.getPart(Request.java:2944)
	org.apache.catalina.connector.RequestFacade.getPart(RequestFacade.java:1105)
	com.bjsxt.servlet.FileUpLoadServlet.doPost(FileUpLoadServlet.java:32)
	com.bjsxt.servlet.FileUpLoadServlet.doGet(FileUpLoadServlet.java:20)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

org.apache.tomcat.util.http.fileupload.impl.InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
	org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.init(FileItemIteratorImpl.java:140)
	org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.getMultiPartStream(FileItemIteratorImpl.java:194)
	org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.findNextItem(FileItemIteratorImpl.java:213)
	org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.<init>(FileItemIteratorImpl.java:131)
	org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:255)
	org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:279)
	org.apache.catalina.connector.Request.parseParts(Request.java:2873)
	org.apache.catalina.connector.Request.getParts(Request.java:2775)
	org.apache.catalina.connector.Request.getPart(Request.java:2944)
	org.apache.catalina.connector.RequestFacade.getPart(RequestFacade.java:1105)
	com.bjsxt.servlet.FileUpLoadServlet.doPost(FileUpLoadServlet.java:32)
	com.bjsxt.servlet.FileUpLoadServlet.doGet(FileUpLoadServlet.java:20)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

):注意 主要问题的全部 stack 信息可以在 server logs 里查看


JAVA:

package com.bjsxt.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.UUID;

@WebServlet("/fileupload.do")
@MultipartConfig//基于注解开发的文件上传
public class FileUpLoadServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置请求编码
        req.setCharacterEncoding("utf-8");
        //设置响应编码
        resp.setContentType("text/html;charset=utf-8");
        //获取文件描述
        String desc = req.getParameter("desc");
        //获取part对象  参数给form表单中上传文件的name
        Part part = req.getPart("file");
        /*//设置唯一的文件名,避免因为文件名重复而造成文件覆盖,
        * 先截取文件的后缀(扩展名),然后与随机生成唯一的字符串拼接
        * UUID.randowUUID()随机生成一个唯一的字符串,返回UUID类型,需要调用toString()返回字符串类型*/
        String name = UUID.randomUUID().toString() + part.getSubmittedFileName().substring(part.getSubmittedFileName().lastIndexOf("."));
        //将相对路径转换为绝对路径
        ServletContext servletContext = this.getServletContext();
        String realPath = servletContext.getRealPath("images/" + name);
        System.out.println(realPath);
        //将上传的对象做IO流chuli,并通过字符输出流写入到路径中
        part.write(realPath);

        PrintWriter out = resp.getWriter();
        /*拼接HTML页面*/
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE>临江仙.文件上传</TITLE></HEAD>");
        out.println("<BODY>");
        out.println("文件上传成功!"+desc);
        out.println("<BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}


HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body><!--
        get:以字符型方式提交,
        post:既可以以字节方式提交也可以字符方式提交
        -->
    <form   action="fileupload.do"  method="post"   enctype="multipart/form-data">
        文件描述:<input type="text" name="desc"/>
        文件上传:<input type="file" name="file"/>
        <input type="submit"   value="OK"/>
    </form>
</body>
</html>











JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 1415楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 1416楼

老师我跟着视频把代码敲完重启服务器之后就出现以下报错页面,也不自动跳转到浏览器,老师我该怎么解决这个问题

package com.bjsxt.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 通过注解方式读取servlet初始化配置信息
 */
@WebServlet(urlPatterns = "initParam.do",initParams = {@WebInitParam(name = "key1",value = "value1"),@WebInitParam(name = "key2",value = "value2")},loadOnStartup = 1)
public class InitParamServlet extends HttpServlet {
    @Override
    public void init() throws ServletException {
        //读取@WebParam注解中的属性
        ServletConfig servletConfig = this.getServletConfig();
        System.out.println(servletConfig.getInitParameter("key1"));
        System.out.println(servletConfig.getInitParameter("key2"));
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletConfig servletConfig = this.getServletConfig();

        PrintWriter out = resp.getWriter();
        /*拼接HTML页面*/
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");
        out.println("Value1:"+servletConfig.getInitParameter("key1")+"</br></br>");
        out.println("Value2:"+servletConfig.getInitParameter("key2")+"</br></br>");
        out.println("</BODY>");
        out.println("</HTML>");

        out.flush();
        out.close();
    }
}

以下是报错信息:


image.png


image.png


image.png



















JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 1420楼

老师,在这个添加的功能实现中,视频中老师添加的都是英文字段的,

我自己写出来这个功能之后,试着添加中文字段的username,可是在数据库中显示的是乱码,

然后我进行问题的排查,在控制台打印信息,发现在提取表单数据的时候就是打印的问号(说明是乱码)


我想问:浏览器,jsp页面,服务器之间的编码的关系是怎么样的?

这个是我添加功能的servlet

package com.sunxin.web.servlet;

import com.sunxin.pojo.Users;
import com.sunxin.service.UserManagerService;
import com.sunxin.service.impl.UserManagerServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

@WebServlet("/AddUser.do")
public class UserAddServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String flag = req.getParameter("flag");


            if ("adduser".equals(flag)){

                //调用这个AddUserManager方法
                this.AddUserManager(req,resp);
            }

    }

    //定义一个处理这个添加功能的方法
    private void AddUserManager(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
           try{

               //实例化service接口
               UserManagerService ums = new UserManagerServiceImpl();
               ums.AddUserFunction(this.getThisPageUser(req));
                    
                    //排查的代码
               System.out.println("**************************************");
               System.out.println(this.getThisPageUser(req).getUsername());
               System.out.println("**************************************");

               resp.sendRedirect("ok.jsp");
           }catch (Exception e){
               e.printStackTrace();
               resp.sendRedirect("error.jsp");
           }


    }

    //定义一个获取User对象的方法的

    private Users getThisPageUser(HttpServletRequest req){

        //修改tomcat的编码方式
        try {
            req.setCharacterEncoding("utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String username = req.getParameter("username");
        String userpwd = req.getParameter("userpwd");
        String usersex = req.getParameter("usersex");
        String phonenumber = req.getParameter("phonenumber");
        String qqnumber = req.getParameter("qqnumber");
        //装进一个user对象中
        Users user = new Users();
        user.setUsername(username);
        user.setUserpwd(userpwd);
        user.setUsersex(usersex);
        user.setPhonenumber(phonenumber);
        user.setQqnumber(qqnumber);

        return user;
    }

}

这个是页面的代码

<%--
  Created by IntelliJ IDEA.
  User: asus
  Date: 2020/8/5
  Time: 9:32
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java"  pageEncoding="UTF-8" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    <link href="css/select.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/jquery.idTabs.min.js"></script>
    <script type="text/javascript" src="js/select-ui.min.js"></script>
    <script type="text/javascript" src="editor/kindeditor.js"></script>
    <script type="text/javascript" src="My97DatePicker/WdatePicker.js"></script>
    <script type="text/javascript">
        $(document).ready(function(e) {
            $(".select1").uedSelect({
                width : 345
            });

        });
        function save(){
            window.location='ok.html';
        }

    </script>
    <script type="text/javascript">
        KE.show({id:"ecp",width:"800px",height:"300px"});
    </script>
</head>

<body>

<div class="place">
    <span>位置:</span>
    <ul class="placeul">
        <li><a href="#">用户管理</a></li>
        <li><a href="#">添加用户</a></li>
    </ul>
</div>

<div class="formbody">

    <div class="formtitle"><span>基本信息</span></div>

    <form action="AddUser.do" method="post" accept-charset="utf-8">
        <input type="hidden" name="flag" value="adduser"/>
    <ul class="forminfo">
        <li>
            <label>用户名</label>
            <input name="username" type="text" class="dfinput" /></li>
        <li>
        <li>
            <label>密码</label>
            <input name="userpwd" type="text" class="dfinput" /><i></i></li>
        <li>
            <label>性别</label><cite/>
            <input name="usersex" type="radio" value="1" checked="checked" />男&nbsp;&nbsp;&nbsp;&nbsp;
            <input name="usersex" type="radio" value="0" />女

        </li>
        <li>
            <label>联系方式</label>
            <input name="phonenumber" type="text" class="dfinput" />
        </li>
        <li>
            <label>QQ号</label>
            <input name="qqnumber" type="text" class="dfinput" />
        </li>
        <li>
            <label>&nbsp;</label>
            <input name="" type="submit"  class="btn" value="确认保存" />
        </li>
    </ul>
    </form>
</div>

</body>
</html>


JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 1421楼

老师我按照你的代码敲得出来一直是服务器报错500

servlet代码

package com.bjsxt.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.UUID;

@WebServlet("/fileupload.do")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String desc = req.getParameter("desc");
        Part part = req.getPart("file");
        /*//获取文件上传的字节流
        InputStream inputStream = part.getInputStream();*/
        //给文件改名
        String fileName = UUID.randomUUID().toString()+part.getSubmittedFileName().substring(part.getSubmittedFileName().lastIndexOf("."));
        //路径转换
        ServletContext servletContext = this.getServletContext();
        String realPath = servletContext.getRealPath("images/" + fileName);
        part.write(realPath);
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");
        out.println("上传成功!"+desc);
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

hmtl代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="fileupload.do" method="post" enctype="multipart/form-data">
    文件描述:<input type="text" name="desc"/>
    上传文件:<input type="file" name="file"/>
    <input type="submit" value="OK"/>
</form>
</body>
</html>

就这2个了吧,我敲出来就是服务器500.我看了好久,他总是先运行上一章initServlet的Servlet因为他每次都会输出三个value的值,我把这个代码全部注释掉了再试了一次,还是一样的500报错。

image.png

老师可以帮我看看吗

JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 1422楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637