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

servlet介绍

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

servlet介绍

servlet技术用于处理页面的请求,创建servletJAVA类,里面有响应页面请求的方法

servlet的生命周期为:

package Servlet;

import java.io.IOException;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;


//@WebServlet("/Servletshengmingzhouqi")
public class Servletshengmingzhouqi extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	static {
		System.out.println("Servlet被加载....");
	}

	public Servletshengmingzhouqi() {
		System.out.println("Servlet被实例化....");
	}

	
	public void init(ServletConfig config) throws ServletException {
		System.out.println("Servlet被初始化....");
	}

	
	public void destroy() {
		System.out.println("Servlet被销毁....");
	}

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("Servlet请求处理中....");
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("Servlet请求服务中....");
	}

}

加载-实例化-初始化-处理-销毁

 

  servlet类中的主要方法就是:

init:初始化方法,在构造函数后面调用

destroy:销毁方法,在手动关闭servlet时调用

doGet、doPost:浏览器使用get、post方法时调用指定方法

默认情况下,浏览器发送请求时servlet进行加载-实例化-初始化,不过可以在wep.xml配置默认服务器开启时自动 加载-实例化-初始化:

1

给定的数字参数越大,服务器在实例化它时优先级就越高,0为浏览器发送请求时实例化

 浏览器页面若想使用servlet就需要配置路径:

	
		smzq
		Servlet.Servletshengmingzhouqi
	
	
	
		smzq
		/Servletsmzq
	

servlet-name:servlet的别名

servlet-class:servlet类的地址

url-pattern:将servlet访问地址切换为这个名字,form地址栏可以直接用这个地址

 以上配置文件也许有一些繁琐,也可以直接在servlet类中配置:

@WebServlet("/Servletsmzq")

 这两种方法选其中一种就像,但是同时只能出现一种,不然你懂的:

既然已经了解了基本方法,我们来写一个网页提交信息的练习:

写前端:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>




Insert title here


	
商品名称
商品编号 是否递增
商品品牌
供应商
商品价格
商品备注
<% Object s = request.getAttribute("error"); if (s != null) { %> <%=s%> <% } %>

写pojo:

package Pojo;

import java.util.ArrayList;
import java.util.List;

public class ShangPin {
	public static List ShangPinList = new ArrayList<>();
	public static int baseNo = 0;
	private String name;// 名字
	private int on;// 编号
	private String logo;// 品牌
	private String supplier;// 供应商
	private double price;// 价格
	private String remark;// 备注

	public ShangPin(String name, int on, String logo, String supplier, double price, String remark) {
		this.name = name;
		this.on = on;
		this.logo = logo;
		this.supplier = supplier;
		this.price = price;
		this.remark = remark;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getOn() {
		return on;
	}

	public void setOn(int no) {
		this.on = no;
	}

	public String getLogo() {
		return logo;
	}

	public void setLogo(String logo) {
		this.logo = logo;
	}

	public String getSupplier() {
		return supplier;
	}

	public void setSupplier(String supplier) {
		this.supplier = supplier;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}
}

写Servlet:

package Servlet;

import java.io.IOException;

import Pojo.ShangPin;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;


@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	public AddServlet() {
		// TODO Auto-generated constructor stub
	}

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String name = request.getParameter("name");// 名字
		String logo = request.getParameter("logo");// 获取品牌
		String supplier = request.getParameter("supplier");// 供应商
		String price = request.getParameter("price");// 价格
		String remark = request.getParameter("remark");// 备注
		String[] cbx = request.getParameterValues("diZeng");// 递增
		String on = "";
		if (cbx != null) {
			on = "" + (++(ShangPin.baseNo));
		} else {
			on = request.getParameter("on");// 编号
		}
		if (name.equals("") || logo.equals("") || supplier.equals("") || price.equals("") || remark.equals("")
				|| on.equals("")) {
			request.setAttribute("error", "数据不能少");
			request.getRequestDispatcher("ZhuYe.jsp").forward(request, response);
		} else {
			ShangPin sp = new ShangPin(name, Integer.parseInt(on), logo, supplier, Double.parseDouble(price), remark);
			System.out.println(sp.getName());
			System.out.println(sp.getOn());
			System.out.println(sp.getLogo());
			System.out.println(sp.getSupplier());
			System.out.println(sp.getPrice());
			System.out.println(sp.getRemark());
		}

	}

}

前端负责收集信息、

提交到后端时,右AddServlet处理信息,把每个数据取出来:

request.getParameter("")

request主要用于取出前端提交的信息

是否递增选项为多选框,使用:

String[] arr = request.getParameterValues("");

后端逻辑:

主要难点为多选框选中时和未选中时;

选中时不取手动填写编号框

未选中时取出手动填写编号框

 将所有数据取出后同一进行非空判断,

如果不满足利用重定义方法重新定义到前端页面

request.setAttribute("error", "数据不能少");//定义传回前端的提示数据
request.getRequestDispatcher("ZhuYe.jsp").forward(request, response);//定义重定义页面,和传回的数据

逻辑比较简单,仔细一点就能完成,404、500不要怕,奥里给!!干就完了!! 

Servlet返回响应response使用

response.setContentType("text/html;charset=UTF-8");
			PrintWriter out = response.getWriter();
			out.println("

" + sp.getName() + "

"); out.println("

" + sp.getOn() + "

"); out.println("

" + sp.getLogo() + "

"); out.println("

" + sp.getSupplier() + "

"); out.println("

" + sp.getPrice() + "

"); out.println("

" + sp.getRemark() + "

");

首先设置编码格式,获取输出对象、输出 

显示当前登录名和安全退出按钮:

使用session存入数据,只要浏览器没被关闭,就能使用

登录页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>


	
		
		Insert title here
	
	
		
用户名:
密码:
<%Object s=request.getAttribute("error"); if(s!=null){ out.print("

"+s+"

"); } %>

处理登录servlet类:

package Servlet;

import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;


@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	public loginServlet() {
		// TODO Auto-generated constructor stub
	}

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String name = "test";
		String pwd = "test";
		String htmlName = request.getParameter("name");
		String htmlPwd = request.getParameter("pwd");
		if (name.equals(htmlName) && pwd.equals(htmlPwd)) {
			HttpSession session=request.getSession();
			session.setAttribute("NAME", name);
			request.getRequestDispatcher("ZhuYe.jsp").forward(request, response);
		} else {
			request.setAttribute("error", "用户名或密码错误");
			request.getRequestDispatcher("login.jsp").forward(request, response);
		}
	}

}

显示当前登录名字和安全退出按钮:

		<%
		out.print(session.getAttribute("NAME"));
		%>
		退出登录
	

安全退出servlet类:

package Servlet;

import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import jakarta.websocket.Session;


@WebServlet("/tuiChuServlet")
public class tuiChuServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	public tuiChuServlet() {
		// TODO Auto-generated constructor stub
	}

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		HttpSession session = request.getSession();
		session.invalidate();
		request.getRequestDispatcher("login.jsp").forward(request, response);
	}

}

逻辑为:清除session数据,

重定义页面。

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

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

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