java4.1 javaWeb[ servlet ]

java4.1 javaWeb[ servlet ],第1张

java4.1 javaWeb[ servlet ]

这里写目录标题
    • 四.Servlet
        • 1. 创建一个Servlet :star:
        • 2.ServletContext
            • 1)共享数据
            • 2)获取初始化参数
            • 3)转发请求
            • 4)读取资源文件
        • 3.响应-Response
        • 4.请求-Request
        • 5.cookie 和 session
            • 1)区别
            • 2)cookie
            • 3)session
    • 五.JSP
        • 0.准备工作
        • 1.基础语法
        • 2.标签库 JSTL
    • 六.MVC
    • 七、过滤器-Filter
    • 八.Junit单元测试

四.Servlet

servlet 就是开发动态 web 的一门技术 —— 是实现了 Servlet 接口的 java 程序

  1. 编写一个类,实现 servlet 接口
  2. 把开发好的 java 类部署到 web 服务器中
1. 创建一个Servlet ⭐️

IDEA:用maven创建servlet例子1(详细)

IDEA:用maven创建servlet例子2(mapping)

  • 创建项目

  • 添加依赖

    
        javax.servlet
        javax.servlet-api
        4.0.1
    
    
        javax.servlet.jsp
        javax.servlet.jsp-api
        2.3.3
    
    
  • 在 java 包下创建测试类

    重写 HttpServlet 方法。接收并处理请求,给出响应信息

  • 编写 servlet 映射

    web.xml添加servlet信息

    
        
        
            hello
            com.zheng.servlet.HelloServlet
        
        
        
            hello
            /hello
        
    
    
  • 启动 Tomcat 服务

2.ServletContext

web容器在登录的时候,它会为每个web程序都创建一个对应的 ServletContext 对象,它代表了当前的 web 应用

ServletContext slContext = this.getServletContext();

1)共享数据
//【A类】为set类用于存放数据
ServletContext slContext = this.getServletContext();
String uname = "我的名字";
slContext.setAttribute("username",uname);
//【B类】为get类用于获取数据
ServletContext slContext = this.getServletContext();
String username = (String) slContext.getAttribute("username");
//用于设置返回格式及编码
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
resp.getWriter().print(username);

输出结果:

注:两个类所定义的 this.getServletContext() 指向的是同一个对象,因为ServletContext是全局唯一的存在

2)获取初始化参数

  url
  jdbc:mysql://locahost:3306/stuDB

ServletContext slContext = this.getServletContext();
String url = slContext.getInitParameter("url");
resp.getWriter().print(url);
3)转发请求

使用 forward (req,resp) 方法转发

ServletContext slContext = this.getServletContext();
slContext.getRequestDispatcher("/demo3").forward(req,resp);
4)读取资源文件
// resources 下有一个资源 db.properties,打包后会去到"/WEB-INF/classes"目录下
InputStream resource = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties prop = new Properties();
prop.load(resource);
String name = prop.getProperty("name");
String pass = prop.getProperty("pass");
resp.getWriter().print("name="+name);
resp.getWriter().print("pass="+pass);
3.响应-Response

向浏览器发送数据的方法

//发送其他信息
ServletOutputStream getOutputStream() throws IOException;
//发送文本
PrintWriter getWriter() throws IOException;

向浏览器发送响应头的方法

//响应编码  例:resp.setCharacterEncoding("utf-8");
void setCharacterEncoding(String var1);
//响应字符串长度
void setContentLength(int var1);
//响应类型  例:resp.setContentType("text/html");
void setContentType(String var1);

重定向

resp.sendRedirect("/img"); //url地址栏会改变
4.请求-Request

获取传递参数

//获取某个参数值 uname = req.getParameter("uname");
String getParameter(String var1);  
5.cookie 和 session 1)区别
  • cookie
    • 客户端技术 - 把用户的数据写给用户浏览器,浏览器保存
    • 是服务端将资源放在 cookie对象中 返回给客户端
    • cookie 大小限制为 4kb
  • session
    • 服务端技术 - 把用户数据写到用户独占 session 中,服务器保存
    • 是用户拿着sessionID去获取对应服务器中对应的资源
2)cookie
  • 创建一个cookie,并添加到 resp
cookie coo = new cookie("names", "zhengs");//参数分别为键和值
coo.setMaxAge(30); //【可选项】设置有效期为30秒,不设置情况下关闭浏览器既删除
resp.addcookie(coo);
  • 从请求中获取 cookie
cookie[] cookies = req.getcookies();//返回的是数组
for(cookie cookie : cookies){
    out.write(cookie.getName()+" ");
    out.write(cookie.getValue());
}
  • 删除 cookie
coo.setMaxAge(0); //有效期设置为0
3)session
  • 获取 session
HttpSession session = req.getSession();
  • session 属性
//设置属性
session.setAttribute("name",new persion("小郑同学",21));
//获取属性
persion name = (persion)session.getAttribute("name");
//获取id
String id = session.getId();
//判断 session 是不是刚新建的
if (session.isNew()){
    resp.getWriter().write("创建了session ID:"+id);
}else {
    resp.getWriter().write("获得了session ID:"+id);
}
  • 注销
HttpSession session = req.getSession();
session.removeAttribute("name");
session.invalidate();
  • 可在 xml 配置文件中设置 session 的过期时间

    
    10

五.JSP

Java Server Pages:Java服务器页面

0.准备工作

    javax.servlet.jsp
    javax.servlet.jsp-api
    2.3.3



    javax.servlet.jsp.jstl
    jstl-api
    1.2



    taglibs
    standard
    1.1.2

1.基础语法
<%--页面配置--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--表达式--%>
时间:<%= new java.util.Date()%>
<%--脚本片段 跟java一样的--%>
<%
    out.println("输出h1到h5标签");
    for (int i = 1; i < 6; i++) {
        out.println("标题 "+i+"");
    }
%>
2.标签库 JSTL

弥补HTML标签的不足

核心标签

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

注:tomcat的lib目录下可能没有 jst-api 包和 standard 包,将会报错

标签描述用于在JSP中显示数据,就像<%= … >用于保存数据用于删除数据与一般程序中用的if一样基础迭代标签,接受多种集合类型使用可选的查询参数来创造一个URL


  


六.MVC

七、过滤器-Filter
  • Filter :过滤器-过滤网站的数据

    编写过滤器,导包 > 重写

    import javax.servlet.*;
    import java.io.IOException;
    
    public class file implements Filter {
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("过滤器-初始化");
        }
    
        //过滤内容
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain Chain) throws IOException, ServletException {
            req.setCharacterEncoding("utf-8");
            resp.setCharacterEncoding("gbk");
            Chain.doFilter(req,resp);//放行,如果不写程序会被拦截
        }
    
        public void destroy() {
            System.out.println("过滤器-销毁");
        }
    }
    

    在 web.xml中配置filter

    
        filterEncoding
        com.zheng.filter.file
    
    
        filterEncoding
        
        /file/*
    
    
八.Junit单元测试

test目录下 > texts类 (只要添加 Test 注解,即可直接运行该类)

import org.junit.Test; //导包
public class texts {
    @Test
    public void text(){
        System.out.println("Hello");
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5482224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存