黑马程序员技术交流社区

标题: 【石家庄校区】Tomcat&Servlet课堂笔记 [打印本页]

作者: 学习让我快乐啊    时间: 2018-5-21 17:59
标题: 【石家庄校区】Tomcat&Servlet课堂笔记
本帖最后由 学习让我快乐啊 于 2018-5-21 18:00 编辑

Tomcat

软件架构Web的资源常见Web服务器(中间件)Web动态资源目录结构  website
      |-----静态资源
      |-----WEB-INF
                  |-----web.xml :必须的
                  |-----classes :可选的
                  |-----lib     :可选的Tomcat目录结构部署HTTP协议HTTP协议的详解
Servlet


Servlet的实现和继承的关系
Servlet         :接口
   |
GenericServlet  :通用的Servlet
   |
HttpServlet     :HttpServlet
思想:把耗时的操作放到服务器启动时执行
设置启动时创建Servlet
Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
在web.xml中在<servlet></servlet>标签中配置:
<load-on-startup>2</load-on-startup> --- 传入正整数,整数越小,被创建的优先级就越高.(不能设置为1)
url-pattern的三种配置方式页面跳转的3种实现方式
3.设置html中的<meta>标签

<meta http-equiv="refresh" content="0; url='http://www.qq.com/'">ServletContext对象作用域对象读取web项目下的文件
Response


处理中文乱码
设置浏览器默认打开编码
response.setHeader("Content-Type", "text/html;charset=UTF-8");
中文转成字节数组编码
response.getOutputStream().write("王守义".getBytes("UTF-8"));
设置response的缓冲区的编码
response.setCharacterEncoding("UTF-8");
设置浏览器默认打开的编码.
response.setHeader("Content-Type", "text/html;charset=UTF-8");
response.setContentType("text/html;charset=UTF-8");相当于上面两句
文件下载
public static void downloadFile(HttpServletRequest request,HttpServletResponse response) throws ClassNotFoundException, IOException{
        String filename = new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
        String type = request.getServletContext().getMimeType(filename);
        InputStream is =request.getServletContext().getResourceAsStream("/downloadfiles/"+filename);
        response.setContentType("text/html;charset=UTF-8");
        response.setHeader("Content-Type", type);
        if(request.getHeader("User-Agent").contains("Firefox")){
            filename = base64EncodeFileName(filename);
        }else{
            filename= URLEncoder.encode(filename);
        }
        response.setHeader("Content-Disposition", "attachment;filename="+filename);
        OutputStream os = response.getOutputStream();
        int len;
        byte[] bys = new byte[1024];
        while((len=is.read(bys))!=-1){
            os.write(bys, 0, len);
        }
        is.close();
    }
    public static String base64EncodeFileName(String fileName) {
        BASE64Encoder base64Encoder = new BASE64Encoder();
        try {
            return "=?UTF-8?B?"
                    + new String(base64Encoder.encode(fileName
                            .getBytes("UTF-8"))) + "?=";
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }


Request

获取客户端信息获取表单参数
String request.getParameter(String name);
String [] request.getParameterValues(String name);
Map<String,String[]> request.getParameterMap();
参数接收中的乱码处理作为域对象存取数据
范围:一次请求和响应的范围

void setAttribute(String name,Object value);
Object getAttribute(String name);
void removeAttribute(String name)转发和重定向


作者: Yin灬Yan    时间: 2018-5-22 11:35
我来占层楼啊   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2