最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaWeb.servlet的基本使用方法詳解

 更新時(shí)間:2022年04月29日 10:06:26   作者:失格LXY  
Servlet指在服務(wù)器端執(zhí)行的一段Java代碼,可以接收用戶的請求和返回給用戶響應(yīng)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于JavaWeb.servlet基本使用的相關(guān)資料,需要的朋友可以參考下

前言:

我們在前幾篇文章里的web項(xiàng)目都是用jsp文件完成的,那么什么時(shí)候jsp算是學(xué)完了呢?——在jsp文件中沒有java代碼。

在原來的doxxx.jsp文件里寫的都是處理登陸或者主頁面功能的java代碼,現(xiàn)在我們需要servlet來代替doxxx.jsp文件。

一.實(shí)現(xiàn)servlet

我們可以一個(gè)登陸來當(dāng)例子。

建一個(gè)com.xxx.servlet包,在寫一個(gè)LoginServlet類

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
 *用來實(shí)現(xiàn)登陸請求的處理
 */
public class LoginServlet implements Servlet{
 
	//生命周期
	
	@Override//初始化
	public void init(ServletConfig arg0) throws ServletException {
		//當(dāng)請求來到這個(gè)servlet就會調(diào)用init方法
		System.out.println("開始初始化");
	}
	
	@Override//服務(wù)
	public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
		// 所有的代碼寫在這個(gè)方法中
		//強(qiáng)轉(zhuǎn)響應(yīng)
		HttpServletResponse response = (HttpServletResponse) resp;
		//強(qiáng)轉(zhuǎn)請求
		HttpServletRequest request = (HttpServletRequest) req;
		//如果用戶名是中文
		req.setCharacterEncoding("utf-8");
		//取到用戶數(shù)據(jù)
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		//通過響應(yīng)對象獲得輸出對象
		PrintWriter out = response.getWriter();
	    //通過請求對象取session,需要強(qiáng)轉(zhuǎn)請求
		HttpSession session = request.getSession();
		//取application通過請求對象
		ServletContext application = request.getServletContext();
		//與數(shù)據(jù)庫數(shù)據(jù)做對比
		if("root".equals(username)&&"root123".equals(password)) {
			//登陸成功
			//轉(zhuǎn)發(fā):req.getRequestDispatcher("/xx").forward(req, resp);
	        //重定向:需要強(qiáng)轉(zhuǎn)響應(yīng)
			//response.sendRedirect("/xx");
			out.println("登陸成功");
		}else {
			//登陸失敗
			out.println("登陸失敗");
		}
	}
	
	@Override//銷毀
	public void destroy() {
		//什么時(shí)候銷毀
		//1.服務(wù)關(guān)閉時(shí)
		//2.這個(gè)類被修改時(shí)
		System.out.println("我銷毀了");
	}
	
	@Override//得到配置
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}
	
	@Override//得到信息
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}
 
 
}

 家人們注意了在代碼里我使用了強(qiáng)轉(zhuǎn),是因?yàn)镾ervletRequest 和 ServletResponse 沒有重定向功能,所有request(請求)和response(響應(yīng))取不到值。但是ServletRequest 和 ServletResponse的子類有重定向功能所有,我們要進(jìn)行強(qiáng)轉(zhuǎn)。

提供訪問路徑【web.xml】

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>Web20</display-name>
  <!-- web.xml是整個(gè)項(xiàng)目的配置文件  -->
  <welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 1.配置servlet -->
  <servlet>
    <!-- 給取個(gè)名字 -->
    <servlet-name>one</servlet-name>
    <!-- servlet-class需要填上類的全路徑 -->
    <servlet-class>com.zking.servlet.LoginServlet</servlet-class>
  </servlet>
  <!-- 2.配置servlet的訪問路徑 -->
  <!-- mapping 映射 -->
  <servlet-mapping>
     <!-- 對應(yīng)的servlet的名字 -->
     <servlet-name>one</servlet-name>
     <!-- 給它配置一個(gè)訪問路徑 -->
     <url-pattern>/login.do</url-pattern>
  </servlet-mapping>
</web-app>

切記修改了web.xml的代碼一定要重啟服務(wù)器 

訪問路徑一定要加/,否則運(yùn)行會報(bào)錯(cuò)

 登陸界面代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- action里填配置的路徑不需要加/ -->
<form action="login.do" method="post">
    <p><input type="text" name="username"></p>
    <p><input type="text" name="password"></p>
    <p><button>登陸</button></p>
</form>
</body>
</html>

 這樣我們的登陸就完成了,但是這樣大家會不會覺得代碼有點(diǎn)多,沒關(guān)系,還有其他方法。

二.開發(fā)模式 

我們的開發(fā)模式有兩種,一種是(傳統(tǒng)的開發(fā)模式)配置式開發(fā),另一種是注解式開發(fā)。我們上面所講的就是配置式開發(fā),接下來我們來講一講注解式開發(fā)~( ̄▽ ̄)~*。

注解式開發(fā)使用的是@注解,在代碼中@WebServlet就等于web.xml里的

 在@WebServlet后面加上(),在里面直接填入路徑,例如@WebServlet("/xxx")就等于web.xml里的

三.繼承Servlet 

 使用注解式開發(fā)的方法我們就可以不用修改web.xml代碼了,是不是簡單多了(●'?'●)。接下來我們寫一個(gè)MyServlet文件,寫Servlet有兩種方法,一種式實(shí)現(xiàn),另一種是繼承。實(shí)現(xiàn)的方法我們已經(jīng)寫過了,接下來我們使用繼承的方法

package com.zking.servlet;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletContext;
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 javax.servlet.http.HttpSession;
/**
 * 
 * @author zjjt
 *
 */
@WebServlet("/test.do")//直接填訪問路徑
public class MyServlet extends HttpServlet{
	
	//不同的請求方式:
	//doGet 專門處理get請求
	//doPost 專門處理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");
		//取到用戶數(shù)據(jù)
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		//支持中文的編碼【utf-8】【gb2312】【big5】
		req.setCharacterEncoding("gb2312");
		//通過響應(yīng)對象獲得輸出對象
		PrintWriter out = resp.getWriter();
	    //通過請求對象取session,需要強(qiáng)轉(zhuǎn)請求
		HttpSession session = req.getSession();
		//取application通過請求對象
		ServletContext application = req.getServletContext();
		//與數(shù)據(jù)庫數(shù)據(jù)做對比
		if("root".equals(username)&&"root123".equals(password)) {
			//登陸成功
			//轉(zhuǎn)發(fā):req.getRequestDispatcher("/xx").forward(req, resp);
	        //重定向:需要強(qiáng)轉(zhuǎn)響應(yīng)
			//response.sendRedirect("/xx");
			out.println("登陸成功");
		}else {
			//登陸失敗
			out.println("登陸失敗");
		}
	}
}

家人們有發(fā)現(xiàn)實(shí)現(xiàn)和繼承servlet有什么區(qū)別了嗎

我相信細(xì)心的家人們應(yīng)該已經(jīng)發(fā)現(xiàn)了我這里繼承的是HttpServlet而不是Servlet。這是因?yàn)镠ttpServlet是它的子類,具有重定向功能,這下我們又可以省去強(qiáng)轉(zhuǎn)的部分了。所有我推薦大家使用注解式開發(fā)模式和繼承Servlet的方式來寫Servlet喲~

總結(jié)

到此這篇關(guān)于JavaWeb.servlet基本使用的文章就介紹到這了,更多相關(guān)JavaWeb.servlet使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 簡單了解Java多態(tài)向上轉(zhuǎn)型相關(guān)原理

    簡單了解Java多態(tài)向上轉(zhuǎn)型相關(guān)原理

    這篇文章主要介紹了簡單了解Java多態(tài)向上轉(zhuǎn)型相關(guān)原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • spring?webClient配置及使用簡單代碼示例

    spring?webClient配置及使用簡單代碼示例

    WebClient是Spring框架5.0引入的基于響應(yīng)式編程模型的HTTP客戶端,它提供一種簡便的方式來處理HTTP請求和響應(yīng),支持異步和非阻塞式的請求和響應(yīng)處理,下面這篇文章主要給大家介紹了關(guān)于spring?webClient配置及使用的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Java數(shù)組看這篇就夠了

    Java數(shù)組看這篇就夠了

    這篇文章主要介紹了Java數(shù)組的詳細(xì)解釋,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • 一篇文章帶你入門Java方法詳解

    一篇文章帶你入門Java方法詳解

    這篇文章主要介紹了簡單了解Java方法的定義和使用實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • java實(shí)現(xiàn)簡單掃雷小游戲

    java實(shí)現(xiàn)簡單掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Spring XML Schema擴(kuò)展機(jī)制的使用示例

    Spring XML Schema擴(kuò)展機(jī)制的使用示例

    所謂整合,即在Spring的框架下進(jìn)行擴(kuò)展,讓框架能無縫的與Spring工程配合使用。Spring設(shè)計(jì)了良好的擴(kuò)展的機(jī)制,本文將對Spring的擴(kuò)展方法及原理進(jìn)行簡單介紹。
    2021-05-05
  • Java應(yīng)用多機(jī)器部署解決大量定時(shí)任務(wù)問題

    Java應(yīng)用多機(jī)器部署解決大量定時(shí)任務(wù)問題

    這篇文章主要介紹了Java應(yīng)用多機(jī)器部署解決大量定時(shí)任務(wù)問題,兩臺服務(wù)器同時(shí)部署了同一套代碼, 代碼中寫有spring自帶的定時(shí)任務(wù),但是每次執(zhí)行定時(shí)任務(wù)時(shí)只需要一臺機(jī)器去執(zhí)行,需要的朋友可以參考下
    2019-07-07
  • iReport生成pdf打印的實(shí)例代碼

    iReport生成pdf打印的實(shí)例代碼

    下面小編就為大家分享一篇iReport生成pdf打印的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • java swing實(shí)現(xiàn)簡單計(jì)算器界面

    java swing實(shí)現(xiàn)簡單計(jì)算器界面

    這篇文章主要為大家詳細(xì)介紹了java swing實(shí)現(xiàn)簡單計(jì)算器界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Pattern.compile函數(shù)提取字符串中指定的字符(推薦)

    Pattern.compile函數(shù)提取字符串中指定的字符(推薦)

    這篇文章主要介紹了Pattern.compile函數(shù)提取字符串中指定的字符,使用的是Java中的Pattern.compile函數(shù)來實(shí)現(xiàn)對指定字符串的截取,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12

最新評論

广平县| 西华县| 双江| 云浮市| 姚安县| 房产| 晋宁县| 彭水| 昆明市| 德阳市| 阿克| 山阴县| 星座| 甘南县| 醴陵市| 鄱阳县| 天台县| 尖扎县| 宣化县| 华亭县| 托里县| 浪卡子县| 甘孜县| 崇义县| 马公市| 习水县| 肥乡县| 凭祥市| 公安县| 卢湾区| 新乡市| 徐州市| 罗田县| 黎平县| 织金县| 嘉峪关市| 韶山市| 镇雄县| 竹北市| 宜兰县| 石家庄市|