JavaWeb学习+实例代码

本文详细介绍了JavaWeb中的Servlet配置、应用,包括处理数据请求、重定向与请求转发的区别,以及Servlet接口、会话跟踪技术如Cookie、Session,并探讨了JSP基础和内置对象的使用。
摘要由CSDN通过智能技术生成

前言

会根据学习进度持续更新,觉得写的不错的可以收藏跟进。不足之处可以评论
编辑器:IDEA
JDK:11
Tomcat:9.0.54
数据库:MySQL 8.0

一、 Servlet配置

声明Servlet

  • 3.0以后以注解为准

@WebServlet(name = "类名,可以不写",urlPatterns = "/类名url")

二、 Servlet应用

1. 处理数据请求

  • 请求数据方式:超链接和Form表单

1.1. 超链接

  • 超链接一般用于获取/查询资源,属于get类型。数据会依附在URL之后,以?分割URL和传输数据,参数之间以&相连
    • 缺点:安全性差,长度限制

1.2. Form表单

  • Form用于更新资源信息,默认使用GET类型,多使用POST类型。由于POST请求类型理论上没有数据大小限制,可用表单来传比较大的数据

2. 重定向与请求转发

2.1. 重定向

  • 用HttpServletResponse对象的sendRedirect()实现

    • 可以指定到任意页面

    实现类

    @WebServlet(name = "RedirectServlet",urlPatterns = "/RedirectServlet")
    public class RedirectServlet extends HttpServlet {
         
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         
            req.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
            resp.sendRedirect("/RedirectTest");
            resp.getWriter().println("redirect test重定向测试");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         
            doGet(req, resp);
        }
    }
    

    测试类

    @WebServlet(name = "RedirectTest",urlPatterns = "/RedirectTest")
    public class RedirectTest extends HttpServlet {
         
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         
            req.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
            PrintWriter pw = resp.getWriter();
            pw.println("successful成功");
        }
    
        @Override
        protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         
            doGet(req, resp);
        }
    }
    

2.2. 请求转发

  • 请求转发不能指定任意地址

实现类如下,测试类为RedirectTest

@WebServlet(name = "ForwardServlet",urlPatterns = "/ForwardServlet")
public class ForwardServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        req.getRequestDispatcher("/RedirectTest").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        doGet(req, resp);
    }
}
  • Forward与include区别
    • Forward以请求页面为主体,请求另一个页面
    • include把请求页面发回Servlet再次请求另一个页面,Servlet为主体
    • 响应结果都是请求页。

2.3 对数据的存取

  • 重定向不传输数据,请求转发传输数据

实现类

@WebServlet(name = "ForwardAttributeServlet",urlPatterns = "/ForwardAttributeServlet")
public class ForwardAttributeServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        req.setAttribute("objname","jing");
        req.getRequestDispatcher("/ResultTest").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        doGet(req, resp);
    }
}
@WebServlet(name = "RedirectAttributeServletServlet",urlPatterns = "/RedirectAttributeServlet")
public class RedirectAttributeServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        req.setAttribute("objname","jing");
        resp.sendRedirect("/ResultTest");
        resp.getWriter().println("redirect test重定向测试");

    }

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

测试类

@WebServlet(name = "ResultTest",urlPatterns = "/ResultTest")
public class ResultTest extends HttpServlet {
   

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter pw =
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值