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

Servlet相关知识+简单的登入页面

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

Servlet相关知识+简单的登入页面

一、Servlet相关知识 1.什么是Servlet?

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者

2.Servlet的生命周期
①客户端请求Servlet,加载Servlet类到内存

②实例化:调用Servlet的构造器创建一个具体的Servlet对象的过程

③调用init()方法初始化该 Servlet
 ps:第二和第三步是在第一次访问的时候创建servlet程序会调用 

④执行service()方法(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions()、destroy())。
ps:第四步,每次访问都会调用

⑤加载和实例化 Servlet。
ps:这项操作一般是动态执行的。

⑥执行destroy()销毁方法
ps:第六步,在web工程停止的时候调用

如图所示:

3.分发请求

get->doGet
post->doPost

4.servlet加载

默认:1 (当访问时 ,第一次加载)
0(>=0) tomcat启动就加载

5.HttpServlet
  • 在我们创建一个Servlet类后我们会继承HttpServlet类。
  • 查看HttpServlet源码可知道,HttpServlet继承GenericServlet。
  • 因为GenericServlet是抽象类,所以HttpServlet也是抽象类。
6.ServletRequest接口

doGet()和doPost()方法参数类型是HttpServletRequest,HttpServletResponse,分别实现ServletRequest,ServletResponse这两个接口

接收请求参数

  • getParameter(String p)
  • getParameterValues(String p)(当一个参数名对应多个参数值)

传递属性值

  • ${msg}
<% String msg = (String) request.getAttribute("msg"); %>
7.HttpServletResponse对象

响应数据
getWriter() ------获取字节流

getOutputStream() ------获取字节流,能够响应任意类型的数据

8.ServletResponse和RequestDispatcher接口
  • 转发与重定向

这里主要设计转发和重定向 ,前者使用RequestDispatcher,后者使用HttpServletResponse。

  • 请求转发与重定向的区别

请求转发是服务端跳转,重定向是客户端跳转
请求转发是一次请求,而重定向是两次请求
请求转发可以共享request数据,而重定向不可以
请求转发地址栏不发生任何变化,重定向地址会改变
请求转发只能跳转到当前项目下的资源,重定向可以任意资源(可跨越服务器)

  • 回应字符流

PrintWriter out = resp.getWriter();

ps:写入你想要的内容之后 添加上下面的代码
out.flush();
out.close();

  • 回应字节流

ServletOutputStream

api:commons-io需要去官网下载一下
https://commons.apache.org/proper/commons-io/download_io.cgi

字节流: 它处理单元为1个字节(byte),操作字节和字节数组,存储的是二进制文件,如果是音频文件、图片、歌曲,就用字节流好点(1byte = 8位);

字符流: 它处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,如果是关系到**中文(文本)**的,用字符流好点(1Unicode = 2字节 = 16位);

9.路径
  • HttpServletRequest读取路径
req.getContextPath()
req.getServletPath()
req.getPathInfo()
  • 实际站点
req.getServletContext()
req.getRealPath("/")
  • 转发路径
  • 重定向路径
二、简单的登入页面
  • UserServlet.java
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.io.PrintWriter;

@WebServlet("/login")
public class UserServlet extends HttpServlet {

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

        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        String user = req.getParameter("Username");
        String psw = req.getParameter("Password");
        PrintWriter out = resp.getWriter();
        if (user.equals("cracker") && psw.equals("123456")) {
            resp.sendRedirect("welcome.html");

        } else {

            out.println("<title>登陆成功的页面重新登陆对不起,用户名或密码错误,请重新输入!
"); } } }
  • login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    用户登入


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

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

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