前言:我们在前几篇文章里的web项目都是用jsp文件完成的,那么什么时候jsp算是学完了呢?——在jsp文件中没有java代码。

在原来的doxxx.jsp文件里写的都是处理登陆或者主页面功能的java代码,现在我们需要servlet来代替doxxx.jsp文件。

目录

一.实现servlet

二.开发模式

三.继承Servlet


一.实现servlet

我们可以一个登陆来当例子。

建一个com.xxx.servlet包,在写一个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*用来实现登陆请求的处理*/
public class LoginServlet implements Servlet{//生命周期@Override//初始化public void init(ServletConfig arg0) throws ServletException {//当请求来到这个servlet就会调用init方法System.out.println("开始初始化");}@Override//服务public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {// 所有的代码写在这个方法中//强转响应HttpServletResponse response = (HttpServletResponse) resp;//强转请求HttpServletRequest request = (HttpServletRequest) req;//如果用户名是中文req.setCharacterEncoding("utf-8");//取到用户数据String username = req.getParameter("username");String password = req.getParameter("password");//通过响应对象获得输出对象PrintWriter out = response.getWriter();//通过请求对象取session,需要强转请求HttpSession session = request.getSession();//取application通过请求对象ServletContext application = request.getServletContext();//与数据库数据做对比if("root".equals(username)&&"root123".equals(password)) {//登陆成功//转发:req.getRequestDispatcher("/xx").forward(req, resp);//重定向:需要强转响应//response.sendRedirect("/xx");out.println("登陆成功");}else {//登陆失败out.println("登陆失败");}}@Override//销毁public void destroy() {//什么时候销毁//1.服务关闭时//2.这个类被修改时System.out.println("我销毁了");}@Override//得到配置public ServletConfig getServletConfig() {// TODO Auto-generated method stubreturn null;}@Override//得到信息public String getServletInfo() {// TODO Auto-generated method stubreturn null;}}

 家人们注意了在代码里我使用了强转,是因为ServletRequest 和 ServletResponse 没有重定向功能,所有request(请求)和response(响应)取不到值。但是ServletRequest 和 ServletResponse的子类有重定向功能所有,我们要进行强转。

提供访问路径【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是整个项目的配置文件  --><welcome-file-list><welcome-file>/index.jsp</welcome-file></welcome-file-list><!-- 1.配置servlet --><servlet><!-- 给取个名字 --><servlet-name>one</servlet-name><!-- servlet-class需要填上类的全路径 --><servlet-class>com.zking.servlet.LoginServlet</servlet-class></servlet><!-- 2.配置servlet的访问路径 --><!-- mapping 映射 --><servlet-mapping><!-- 对应的servlet的名字 --><servlet-name>one</servlet-name><!-- 给它配置一个访问路径 --><url-pattern>/login.do</url-pattern></servlet-mapping>
</web-app>

切记修改了web.xml的代码一定要重启服务器 

访问路径一定要加/,否则运行会报错

登陆界面代码:

<%@ 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>

这样我们的登陆就完成了,但是这样大家会不会觉得代码有点多,没关系,还有其他方法。

二.开发模式

我们的开发模式有两种,一种是(传统的开发模式)配置式开发,另一种是注解式开发。我们上面所讲的就是配置式开发,接下来我们来讲一讲注解式开发~( ̄▽ ̄)~*。

注解式开发使用的是@注解,在代码中@WebServlet就等于web.xml里的

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

三.继承Servlet

使用注解式开发的方法我们就可以不用修改web.xml代码了,是不是简单多了(●'◡'●)。接下来我们写一个MyServlet文件,写Servlet有两种方法,一种式实现,另一种是继承。实现的方法我们已经写过了,接下来我们使用继承的方法

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请求@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//登陆功能doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//登陆功能//如果用户名是中文req.setCharacterEncoding("utf-8");//取到用户数据String username = req.getParameter("username");String password = req.getParameter("password");//支持中文的编码【utf-8】【gb2312】【big5】req.setCharacterEncoding("gb2312");//通过响应对象获得输出对象PrintWriter out = resp.getWriter();//通过请求对象取session,需要强转请求HttpSession session = req.getSession();//取application通过请求对象ServletContext application = req.getServletContext();//与数据库数据做对比if("root".equals(username)&&"root123".equals(password)) {//登陆成功//转发:req.getRequestDispatcher("/xx").forward(req, resp);//重定向:需要强转响应//response.sendRedirect("/xx");out.println("登陆成功");}else {//登陆失败out.println("登陆失败");}}}

家人们有发现实现和继承servlet有什么区别了吗

我相信细心的家人们应该已经发现了我这里继承的是HttpServlet而不是Servlet。这是因为HttpServlet是它的子类,具有重定向功能,这下我们又可以省去强转的部分了。所有我推荐大家使用注解式开发模式和继承Servlet的方式来写Servlet哟~

到这里就结束了

JavaWeb.servlet基本使用相关推荐

  1. Javaweb servlet体系结构与原理剖析

    Javaweb servlet体系结构与原理剖析 1.Servlet的工作过程 2.Servlet体系结构 3.Servlet工作原理 4.Servlet生命周期 1.Servlet的工作过程 当用户 ...

  2. Javaweb Servlet 下载文件

    JavaWeb Servlet 实现下载文件 Servlet类 import javax.servlet.ServletException; import javax.servlet.ServletO ...

  3. javaweb(servlet)+jsp+Mysql实现的简单相册管理系统(功能包含登录、管理首页、添加图片、分类管理、修改密码、图片详情等)

    博客目录 javaweb(servlet)+jsp+Mysql实现的简单相册管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 javaweb(servlet)+jsp+Mysql实现的简单相 ...

  4. javaweb(servlet)+jsp+Mysql实现的酒店客房管理系统(功能包含登录、用户管理、住客信息管理、房型管理、房间管理、会员星级管理、订单管理等)

    博客目录 javaweb(servlet)+jsp+Mysql实现的酒店客房管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 javaweb(servlet)+jsp+Mysql实现的酒店客 ...

  5. JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)

    JavaWeb--Servlet Tomcat工作机制动画演示(点击动图可全屏观看) 什么是Servlet Servlet(Server Applet),全称Java Servlet,未有中文译文.是 ...

  6. JavaWeb Servlet 登录功能 注销功能

    JavaWeb Servlet 登录功能 注销功能 有三个逻辑: 处理登陆的逻辑,用户主页的逻辑,退出登录逻辑 登陆的逻辑LoginServlet.java import java.io.IOExce ...

  7. javaWeb——Servlet

    Servlet 系统架构 B/S结构的系统通信原理(没有涉及到Java小程序) 关于WEB服务器软件 实现一个最基本的web应用(这个web应用中没有java小程序) 对于一个动态的web应用来说,一 ...

  8. Java-Web Servlet开发

    一.Servlet概述 1.什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Ser ...

  9. JavaWeb——servlet介绍

    一.引言 servlet是javaweb中三大组件之一,必须重中之重,打好基础== 二.Servlet继承关系 Servlet是一个interface,全局限定名:javax.servlet.Serv ...

  10. 重学JavaWeb —— Servlet,简单全面一发入魂

    文章目录 Servlet 概述 基本使用 两个重要对象 请求转发 会话技术 Cookie Session 对比小结 其它相关对象 ServletContext ServletConfig 过滤器 概述 ...

最新文章

  1. 人群计数--Single-Image Crowd Counting via Multi-Column Convolutional Neural Network
  2. java format 字符_JAVA字符串格式化-String.format()的使用
  3. Asp.net中Json数据的转化,读取与应用
  4. C#显示百度地图API
  5. 一位大学教师对学生的建议:如何做好研究
  6. Ubuntu caffe 测试matlab接口
  7. c/c++经典面试试题及标准答案
  8. Linux笔记-rpm与yum的基本概念
  9. Lua中强大的元方法__index详解
  10. 我居然帮初恋用Python去追她男神,这波舔狗真的坐实了啊~
  11. 2022年计算机专业程序员笔记本电脑推荐
  12. Linq-查询上一条下一条
  13. 【VirtualBox打开出错】创建COM对象失败(XP3系统)
  14. android 卡片消息,安卓QNotified 支持xml卡片QQ消息 - 陌路人博客
  15. 北大青鸟网络工程师benet培训招生问答
  16. matlab形成n个对角阵,matlab-线性代数 创建 N阶数量矩阵 N阶单位矩阵 对角矩阵 范德蒙矩阵 等差数列...
  17. 文件或目录损坏且无法读取的解决办法
  18. 电影《美丽心灵》中纳什的经典演讲(双语)
  19. 使用LDAP Directory的好处
  20. Django 查看migration文件生成的sql

热门文章

  1. JAVA四大名著----今天才知道
  2. iOS 修改webView字体大小,设置宽度及缩放效果
  3. 众筹模式融资报告发布
  4. Coding and Paper Letter(五十八)
  5. 人文社科类文献去哪些数据库检索下载
  6. c语言大小写字母相互转化,c语言大小写字母怎么转化?
  7. 海淀、西城、东城各类小学排名(转载)
  8. 按键精灵简单demo
  9. 大型购物平台的系统设计与架构
  10. (纯原创) 基于JAVAWEB的网上购物平台(完整源代码)