个人认为servlet属于一种控制程序,可以处理浏览器的请求并做出对应的回应。我们经常使用的是让一个类去继承HttpServlet,然后在doget或者dopost里面写东西。

目前我个人常在doget里面写,但是不明白为什么dopost里面必须要写一个this.dopost。

接下来主要的就是request和response:

  request就是请求的意思,也就是你的服务器去请求浏览器的东西,我们以一个表单为例。当我们做好了一个表单,然后配置好提交参数,假如我们现在这个表单用于登录验证,我们需要在后台获取到客户在浏览器输入的东西,我们在代码里面就可以用request.getParameter()等方法去获取表单提交的信息。这样我们就可以在后台进行验证了。后台可以进行SQL操作,之后进行比对,这样就完成了一个简单的登录验证。可以看看这个例子。

package cn.itcast.servlet;

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;
import java.io.IOException; @WebServlet("/loginServlet")
public class Loginservlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String checkCode = request.getParameter("checkCode");
//先获取生成的验证码 HttpSession session = request.getSession();
String checkCode_session =(String) session.getAttribute("checkCode_session");
//判断验证码是否正确
if (checkCode_session.equalsIgnoreCase(checkCode)) {
//忽略大小写比较
//判断用户名
if ("zhangsan".equals(username) && "123".equals(password)) {//需要调用UserDao查询数据库
//登陆成功
session.setAttribute("user", username);
// 重定向到success.jsp
response.sendRedirect(request.getContextPath() + "/success.jsp");
} else {
request.setAttribute("login_error", "用户名或密码错误");
//存储信息,用户信息
request.getRequestDispatcher("/login.jsp").forward(request,response); } }
else{
//验证错误 返回错误信息
//存储错误信息到req
request.setAttribute("cc_error","验证码错误");
//转发到登陆页面
request.getRequestDispatcher("/login.jsp").forward(request,response);
} } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}

  

  response是回复的意思。是你服务器对浏览器的回复。目前感觉用的并不多哈哈哈。就举两个例子吧。更多的是用于设置。

   String mimeType = servletContext.getMimeType(filename);
response.setHeader("content-type",mimeType);
// 2.3.2 设置响应头打开方式L:content-disposition
response.setHeader("content-disposition","attachment;filename="+filename);
//3 将输入流的数据写出到输出流中。

  

//简单的重定向
resp.sendRedirect("/day15/responseDemo2");
//简单的形式来设置编码(上面两个功能一起实现)
resp.setContentType("text/html;charset=utf-8");

  

 

Servlet学习记录的更多相关文章

  1. Servlet学习记录4

    带进度条的文件上传 UploadServlet只实现了普通的文件上传,并附带普通文本域的提交.如果需要显示上传进度条,实时显示上传速度等,需要配合使用Ajax技术.这里仍然使用Apache的commo ...

  2. Servlet学习记录3

    提交表单信息 Web程序的任务是实现服务器与客户端浏览器之间的信息交互.客户端提交的信息可能来自表单里的文本框,密码框,选择框,单选按钮,复选框以及文件域.这些表单信息被以参数形式提交到了服务器.Se ...

  3. Servlet学习记录2

    读取web.xml参数 上篇文章ImageServlet里只设置了JPG,GIF,DOC类型文件的Content-Type.如果这时候需求变化了,需要增加Excel文件格式的Content-Type, ...

  4. servlet学习记录:Servlet中的service()方法

    Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServ ...

  5. 我的Spring学习记录(五)

    在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...

  6. Spring 学习记录8 初识XmlWebApplicationContext(2)

    主题 接上文Spring 学习记录7 初识XmlWebApplicationContext refresh方法 refresh方法是定义在父类AbstractApplicationContext中的. ...

  7. HTTP学习记录

    title: HTTP学习记录 toc: true date: 2018-09-21 20:40:48 HTTP协议,HyperText Transfer Protocol,超文本传输协议,是因特网上 ...

  8. 我的Spring Boot学习记录(二):Tomcat Server以及Spring MVC的上下文问题

    Spring Boot版本: 2.0.0.RELEASE 这里需要引入依赖 spring-boot-starter-web 这里有可能有个人的误解,请抱着怀疑态度看. 建议: 感觉自己也会被绕晕,所以 ...

  9. 学习记录-java基础部分(一)

    学习记录-java基础部分(一) 参考:GitHub上的知名项目:javaGuide : https://github.com/Snailclimb/JavaGuide/blob/master/doc ...

随机推荐

  1. petite-vue源码剖析-ref的工作原理

    ref内部的工作原理十分简单,其实就是将指令ref.:ref或v-bind:ref标识的元素实例存储到当前作用域的$refs对象中,那么我们就可以通过this.$refs获取对应的元素实例.但由于作用 ...

  2. Django基础三之路由、视图、模板

    Django基础三之路由.视图.模板 目录 Django基础三之路由.视图.模板 1. Django 请求和返回周期 1.1 路由层之路由匹配 1.2 有名分组 1.3 无名分组 2. 反射解析 3. ...

  3. C++移动语义 详细讲解【Cherno C++教程】

    移动语义 本文是对<最好的C++教程>的整理,主要是移动语义部分,包含视频85p左值和右值.89p移动语义与90p stdmove和移动赋值操作符. 移动语义是C++11的新feature ...

  4. 在Windows 10 上安装使用binwalk

    Windows 10 推出的WSL 功能可以协助我们直接使用binwalk 分析Windows 内的文件 文章更新时间:2020年3月11日 一.WSL 准备 1.打开控制面板→程序和功能→启动或关闭 ...

  5. mybatis——逆向工程中 where (条件1)and (条件2 or 条件3 or 条件4)

    where (条件1)and (条件2 or 条件3 or 条件4) = where (条件1 and 条件2)or (条件1 and 条件3) or (条件1 and 条件4) 结果 是这样的 WH ...

  6. 【混合编程】C/C++调用Fortran的DLL

    [混合编程]C/C++调用Fortran的DLL 以一个简单的加法器为例,介绍C/C++调用Fortran语言DLL的操作过程 一.Fortran操作 1.1 Fortran代码 首先是加法功能的实现 ...

  7. Ansible的原理与配置

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 Ansible原理 Ansible 是一款开源自动化平台.它是一种简单的自动化语言,能够在Ansible Playbook 中完美地描述 IT 应 ...

  8. SpringBoot 如何实现异步编程,老鸟们都这么玩的!

    镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题? 为什么要用异步框架,它解决什么问题? 在SpringBoot的日常开发中 ...

  9. Django模块导入

    Django模块导入篇 Django基础 urls.py 导入app中的视图函数 from app名字 import views app.view视图函数中导入models.py中的类 from ap ...

  10. .htaccess文件构成的PHP后门

    1..htaccess文件 2.文件上传绕过 一般.htaccess可以用来留后门和针对黑名单绕过 创建一个txt写入(png解析为php) AddType application/x-httpd-p ...