1、Servlet是sun公司开发动态web的一门技术
是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet是指任何实现了这个Servlet接口的类,
Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
2、sun在这些API中提供一个接口叫做: Servlet, 如果你想开发一个Servlet程序, 只需要完成两个小步骤:
编写一个类, 实现Servlet接口
把开发好的Java类部署到web服务器中
把实现了Servlet接口的Java程序叫做,Servlet
Serlvet接口Sun公司有两个默认的实现类: HttpServlet、GenericServlet
1.构建一个普通的Maven项目, 删掉里面的src目录, 以后我们学习就在这个项目里面建立Moudel(模块);
这个工程就是Maven的主工程;
父项目中会有:
Servlet01
子项目中会有:模块(没有最好自己填上,在project标签里面)
JavaWeb-Servlet org.example 1.0-SNAPSHOT
父项目中的jar包子项目可以使用,反之不行
1.修改web.xml为最新的
2.将Maven的结构搭建玩完整(java、resource)
1.编写一个普通类
2.实现一个Serlvet接口, 这里只需要继承HttpServlet)

package com.servlet;
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 HelloWorld extends HttpServlet {
//重写方法
//由于get与post只是请求实现不同的方式,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();//响应流
writer.print("Hello,Servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
6.2.5、编写Servlet映射
为什么要映射: 我们写的是Java程序, 但是要通过浏览器访问, 而浏览器需要连接web服务器, 所以我们需要在web服务器中注册我们写的Servlet, 还需给他一个浏览器能访问的路径
写在web标签中
hello
com.servlet.HelloWorld
hello
/hello
6.2.6、配置Tomcat



web项目默认url是localhost:8080/s1
(s1是配置该web项目的tomcat时取的名字,默认是模块名.war)
如果需要进入web模块(程序)就需要配置映射:
然后访问url是:“localhost:8080/s1”+"url-pattern"
即: localhost:8080/s1/hello
Servlet是有Web服务器调用, web服务器在收到浏览器请求后, 会:

前端会打包所有信息到request里传到后端来,后端通过response处理好传回前端通过渲染展示

1.一个Servlet可以指定一个映射路径
hello
/hello
2.一个Servlet可以指定多个映射路径
hello
/hello
hello
/hello1
hello
/hello2
hello
/hello3
3.一个Servlet可以指定通用(通配符)映射路径
hello /hello } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
面试题: 重定向与请求转发的区别?
相同点: 页面都会实现跳转
不同点: 请求转发时url不会发生变化
重定向url会发生变化
<%–这里提交的路径,需要找到项目的路径–%>
<%–
p
a
g
e
C
o
n
t
e
x
t
.
r
e
q
u
e
s
t
.
c
o
n
t
e
x
t
P
a
t
h
代
表
当
前
的
项
目
−
−
{pageContext.request.contextPath}代表当前的项目--%>
登陆成功:
<%--
Created by IntelliJ IDEA.
User: 20827
Date: 2021/9/30
Time: 18:38
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登陆成功
登陆成功!!!
servlet代码:
package com.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "Land_", value = "/Land_")
public class Land_ extends HttpServlet {
//登陆页面跳转
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理请求
String username = request.getParameter("username");//获取表单上传的内容
String password = request.getParameter("password");//获取表单上传的内容
System.out.println(username + ":" + password);
response.sendRedirect("/re/success.jsp");//重定向
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
6.7、HttpServletRequest(请求)
HttpServletRequest代表客户端的请求, 用户通过Http协议访问服务器, HTTP请求中的所有信息会被封装到HttpServletRequest, 通过这个HttpServletRequest的方法, 获得客户端的所有信息
方法简介:
String getParameter(String var1);//获取属性
String getParameterValues(String var1);//获取多个属性
String getContextPath();//获取上下文的路径
int getIntHeader(String var1);//获取头信息
……
1.获取参数与请求转发
String getParameter(String var1);//获取属性
String getParameterValues(String var1);//获取多个属性
登陆页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登陆
登陆
<%--表单的意思是: 以post方式提交表单到LoginServlet页面--%>
servlet:
package com.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
@WebServlet(name = "LoginServlet", value = "/LoginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");//设置请求的编码(接受)
response.setCharacterEncoding("utf-8");//设置响应的编码(处理)
String username = request.getParameter("username");
String password = request.getParameter("password");
String[] hobbys = request.getParameterValues("hobby");
System.out.println(username);
System.out.println(password);
System.out.println(Arrays.toString(hobbys));
//通过请求转发
//这里的 / 代表当前的项目的web应用
request.getRequestDispatcher("/success.jsp").forward(request, response);
}
}
登陆成功页面
<%--
Created by IntelliJ IDEA.
User: 20827
Date: 2021/9/30
Time: 19:49
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登陆成功
登陆成功



