Servlet开发的大体流程及注意事项!!!

Servlet项目开发的大体阶段分为:

准备阶段>>>开发阶段>>>构建阶段>>>部署阶段>>>运行阶段

注意事项:

(1)Servlet项目准备阶段的框架配置,

可以参考博客:Servlet项目配置,这一部分的主要工作是导入项目所需要的jar包,项目目录配置(Facets,Artifacts),及配置Tomcat启动项。

(2)调式项目中,使用DEBUG工具和抓包工具进行问题的处理。

Fiddler是在windows上运行的程序,专门用来捕获HTTP,HTTPS的。
wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS。所以如果是处理HTTP,HTTPS 就用Fiddler, 其他协议比如TCP,UDP 就wireshark。
参考博客:Fiddler和wireshark的介绍

(3)数据的来源一般都是在请求、Cookie和Session、MySQL等数据库中获取。

这里请求的获取方法,Cookie和Session的设置及获取都需要熟练。包括Mysql那老套的连接方法。

参考博客:
[1] 浅谈cookie && session
[2] JDBC编程

(4)Servlet中请求和响应的处理

参考博客:请求和响应的处理

(5)在使用form表单进行文件上传时

1)form表单的attribute部分:编码类型需要指定multipart/form-data

<form action="/publish" method="post" enctype="multipart/form-data">

2)form表单的input部分:input的类型是file.

   <input type="file" name="cover_image">

3 ) Servlet的注解部分: 编码类型为multipart/form-data时,在服务端接收文件数据,要加入注解@MultipartConfig.

@WebServlet("/publish")
@MultipartConfig
public class PublishServlet extends HttpServlet {

}

4 ) Servlet的处理部分: Servlet代码中通过Part对象读取文件对应响应的内容.

Part coverImage = req.getPart("cover_image");
System.out.println(coverImage.getName());//获取html中指定的name
String filename = coverImage.getSubmittedFileName();//获取上传文件的文件名
System.out.println(coverImage.getContentType());//获取文件内容类型
System.out.println(coverImage.getSize());//获取文件大小
InputStream inputStream = coverImage.getInputStream();//获取文件的输入流

//获取images的绝对路径
String path = req.getServletContext().getRealPath("images") + "\\" + filename;

//将文件内容导出到本地
        byte[] buffer = new byte[8192];
        int len;
        try (OutputStream os = new FileOutputStream(path)) {
            while ((len = is.read(buffer)) != -1) {
                os.write(buffer, 0, len);
            }
        }
(6)Servlet项目开发中的字符集编码配置

1)从请求读取数据时(utf-8): req.setCharacterEncoding(“utf-8”);
2)向数据库写入数据时(utf-8):

  • 建库、表:charset utf8mb4
  • JDBC连接的时候(utf-8),dataSource.setCharacterEncoding(“utf8”)

3 ) 输出响应时(utf-8):

  • resp.setContentType(“text/html; charset=utf-8”);
    resp.setCharacterEncoding(“utf-8”);
  • 上面没法设置时,html中设置:<meta charset=”utf-8”>

注意:

  • req.setCharacterEncoding():设置从请求读取或从数据库中取出数据时的编码格式(设置从参数,数据库中获取的动态文字)
  • resp.setContentType(“text/xml; charset=utf-8”):设置页面为utf-8编码 (设置页面静态文字);
  • resp.setContentType()指定 HTTP 响应的编码,同时指定了浏览器显示的编码.而resp.setCharacterEncoding()仅设置HTTP响应的编码,如果之前使用resp.setContentType()已经设置了编码格式,则使用response.setCharacterEncoding()会覆盖之前指定的编码格式。

Servlet练习:简易博客系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值