JavaWeb servlet基本使用

JavaWeb servlet基本使用,第1张

目录

前提回顾

一、什么是servlet

二、实现与生命周期

先实现Servlet

 重写方法

提供访问路径【web.xml】如果修改了web.xml需要重启服务器

案例:实现登录

第一种方法:通过实现servlet

 二、继承与注解开发

访问方式;GET/POST

案例:实现登录

第二种方法:通过继承HttpServlet


前提回顾

jsp什么时候算是学完了【高内聚 低耦合】

没有java代码,在jsp文件中没有java

  • 封装JavaBean
  • *** 作集成到doXX.jsp
  • JSTL代替了java遍历 *** 作 、取值
  • 有一种专门的页面 doxx.jsp只包含java

什么是jsp?本质上就是一个java文件

  • 去除doxx.jsp
  • 新建java文件
  • 实现Servlet(接口)
  • 继承HttpServlet(类)

jsp -(当用户访问该jsp)=> java

一、什么是servlet

     servlet是小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器


 

二、实现与生命周期
  • 先实现Servlet

新建一个包com.zking.servlet之后再创建LoginServlet(用来实现登录请求的处理类)

 

注意实现不要导错包 选中javax.servlet

  •  重写方法
public class LoginServlet implements Servlet{

	@Override//销毁
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override//得到配置
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override//得到信息
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override//初始化
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	@Override//服务
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	}

}
  • 提供访问路径【web.xml】如果修改了web.xml需要重启服务器


  web12
 
  
    /index.jsp
  
  
  
   
    
    one
    
    com.zking.servlet.LoginServlet
   
   
   
   
   
   one
   
   /login.do
   

注意:servlet映射中的 /login.do必须要带上一根/


案例:实现登录 第一种方法:通过实现servlet

index.jsp(主页界面)

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




Insert title here


<%--
传统的开发模式:配置式开发
注解式开发 @注解
--%>

LoginServlet.java(用来实现登录请求的处理类)

package com.zking.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 
 * @author zjjt
 * @Description 用来实现登录请求的处理
 */
public class LoginServlet implements Servlet{

	//生命周期
		@Override//init 初始化
		public void init(ServletConfig arg0) throws ServletException {
	     //第一次进来:当请求来到这个servlet 就会调用init方法
			System.out.print("开始初始化");
		}

		@Override//服务
		
		public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
			HttpServletResponse response=(HttpServletResponse)resp;
			HttpServletRequest request=(HttpServletRequest)req;

			//所有代码写在这个方法中
			req.setCharacterEncoding("gb2312");
			//取用户数据
			String username=req.getParameter("username");
			String password=req.getParameter("password");
			//通过响应对象获取输出对象
            resp.setCharacterEncoding("gb2312");
			PrintWriter out = response.getWriter();
			//取session通过请求对象
			HttpSession session = request.getSession();
			//取application 通过请求对象
			ServletContext application = request.getServletContext();
			//走数据库
			if("aa".equals(username)&&"123".equals(password)) {
				//登录成功
	          out.print("登录成功");
			}else {
				//登录失败
				out.print("登录失败");
			}
		}
		
		@Override //销毁
		public void destroy() {
			// 1、服务关闭了
			// 2、这个类被修改了
			System.out.print("我销毁了");
		}

		@Override//Config 得到配置
		public ServletConfig getServletConfig() {
			// TODO Auto-generated method stub
			return null;
		}

		@Override//得到信息
		public String getServletInfo() {
			// TODO Auto-generated method stub
			return null;
		}

}

注意:.getWriter()方法只有子类HttpServletResponse里面才有,父类ServletRequest没有

所以要将父类ServletRequest强转为子类HttpServletResponse 

网页运行可能会出现乱码的情况,可以使用如下支持中文的编码

支持中文的编码:【utf-8】【gb2312】【big5】

web.xml



  web12
 
  
    /index.jsp
  
  
  
   
    
    one
    
    com.zking.servlet.LoginServlet
   
   
   
   
   
   one
   
   /login.do
   

 二、继承与注解开发

继承不强制你重写,你需要什么就写什么

访问方式;GET/POST

GET:

  1. 通过地址栏携带参数
  2. 网页中的链接全部都是get

POST:

  1.  参数不会显示
  2. 参数没有长度限制

使用注解式开发(注意要带/)

@WebServlet("/test.do")//直接填访问路径
案例:实现登录 第二种方法:通过继承HttpServlet

此方法较上面的方法不需要.xml 也不需要强转 减少了一定的java代码

  MyServlet.java

package com.zking.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.util.concurrent.Executor;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/test.do")//直接填访问路径

public class MyServlet extends HttpServlet{

	//不同的请求方式:
    //doGet :专门处理get请求
	//doPos:专门处理post请求
	
	//xx  [get]
	//location.href='baidu.jsp' [get]
	//表单是get?post [默认是get 可改为post]
	
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		//登录功能
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       
		req.setCharacterEncoding("utf-8");
		//取用户数据
		String username=req.getParameter("username");
		String password=req.getParameter("password");
		
		resp.setCharacterEncoding("gb2312");
		//支持中文的编码:【utf-8】【gb2312】【big5】
		//通过响应对象获取输出对象
		PrintWriter out = resp.getWriter();
		//取session通过请求对象
		HttpSession session = req.getSession();
		//取application 通过请求对象
		ServletContext application = req.getServletContext();
		//走数据库
		if("aa".equals(username)&&"123".equals(password)) {
			//登录成功
            out.print("登录成功");
		}else {
			//登录失败
			out.print("登录失败");
		}
	
	}
	
}

index.jsp

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




Insert title here


<%--
传统的开发模式:配置式开发
注解式开发 @注解
--%>

效果如下: 

 

 


今天的分享就到这里结束啦是✌

以上就是关于 servlet基本使用的一些内容📖

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/733805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存