栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb学习——Servlet(4)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb学习——Servlet(4)

目录
    • Servlet
        • 简介
        • 操作
            • 1.构建一个普通的Maven项目,删掉里面的src文件夹,以后我们学习就在这个项目里面构建Module
            • 2.在父maven项目中建一个webapp的子maven项目
            • 3.优化环境
            • 4.编写一个Servlet程序
            • 启动测试
        • 原理
            • Mapping问题
        • 写一个404页面
            • 优先级问题

Servlet 简介

servlet是开发动态web的一门技术
sun公司在这些API中提供一个接口叫servlet,若要开发一个servlet程序,只要:
1.编写一个类,实现servlet接口
2.把开发好的Java类部署到Web服务器中

操作 1.构建一个普通的Maven项目,删掉里面的src文件夹,以后我们学习就在这个项目里面构建Module

        
            javax.servlet
            javax.servlet-api
            4.0.1
            provided
        
    

这段话加到pom.xml里面去,因为我们需要servlet的API

2.在父maven项目中建一个webapp的子maven项目


父项目的jar包子项目可以直接使用,但是子项目的maven父项目无法使用

3.优化环境

①将web.xml修改为最新的
我自己的好像会报错先用原版的好了





②将maven文件搭建完整

4.编写一个Servlet程序

①编写一个普通类
②实现Servlet接口,这里我们直接继承HttpServlet
当然我们会遇到HttpServlet无法引入的问题,这时候我们需要将tomcat里面的如下所示的两个包放入新建的lib文件夹里

然后在这个红箭头里引入这两个包的lib文件夹即可成功HttpServlet



然后重写HttpServlet

package top.servlet1;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
    //重写一下get和post,他们俩可以相互调用,业务逻辑都一样
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
//        ServletOutputStream outputStream = resp.getOutputStream();
        PrintWriter writer=resp.getWriter();//响应流
        writer.print("Hello,Servlet");
    }

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

编写Servlet映射
我们写的是java,需要浏览器访问,所以需要在web服务器中注册servlet,提供一个浏览器访问路径
web.xml




  Archetype Created Web Application

  
    hello
    top.servlet1.HelloServlet
  

  
    hello
    /hello
  

配置Tomcat

启动测试

原理

Servlet是由Web服务器调用,web服务器在收到浏览器的请求后会:

Mapping问题

一般都是一对一
一个servlet指定一个映射路径
localhost:8080/s1/hello/hello


  hello
  /hello

一个servlet指定多个映射路径
localhost:8080/s1/hello/hello1
localhost:8080/s1/hello/hello2
localhost:8080/s1/hello/hello3


  hello
  /hello1


  hello
  /hello2


  hello
  /hello3

也可以使用通用路径
localhost:8080/s1/hello/dwpqdhwqpdqwd随便什么


  hello
  /hello/*

默认请求


  hello
  /*

前后缀
localhost:8080/s1/hello/whuidqhudhu随便什么.xxx


  hello
  *.xxx

写一个404页面
package top.servlet1;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class ErrorServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");

        PrintWriter writer = resp.getWriter();
        writer.print("404
你的页面被我吃掉了!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }

然后再到web.xml里面注册

    
        error
        top.servlet1.ErrorServlet
    
    
        error
        /*
    
优先级问题

设置了固有的映射路径的优先级最高
这里部分朋友的web-app会标红,用下面代码即可




结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/592541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号