Servlet学习记录
个人认为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学习记录的更多相关文章
- Servlet学习记录4
带进度条的文件上传 UploadServlet只实现了普通的文件上传,并附带普通文本域的提交.如果需要显示上传进度条,实时显示上传速度等,需要配合使用Ajax技术.这里仍然使用Apache的commo ...
- Servlet学习记录3
提交表单信息 Web程序的任务是实现服务器与客户端浏览器之间的信息交互.客户端提交的信息可能来自表单里的文本框,密码框,选择框,单选按钮,复选框以及文件域.这些表单信息被以参数形式提交到了服务器.Se ...
- Servlet学习记录2
读取web.xml参数 上篇文章ImageServlet里只设置了JPG,GIF,DOC类型文件的Content-Type.如果这时候需求变化了,需要增加Excel文件格式的Content-Type, ...
- servlet学习记录:Servlet中的service()方法
Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServ ...
- 我的Spring学习记录(五)
在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...
- Spring 学习记录8 初识XmlWebApplicationContext(2)
主题 接上文Spring 学习记录7 初识XmlWebApplicationContext refresh方法 refresh方法是定义在父类AbstractApplicationContext中的. ...
- HTTP学习记录
title: HTTP学习记录 toc: true date: 2018-09-21 20:40:48 HTTP协议,HyperText Transfer Protocol,超文本传输协议,是因特网上 ...
- 我的Spring Boot学习记录(二):Tomcat Server以及Spring MVC的上下文问题
Spring Boot版本: 2.0.0.RELEASE 这里需要引入依赖 spring-boot-starter-web 这里有可能有个人的误解,请抱着怀疑态度看. 建议: 感觉自己也会被绕晕,所以 ...
- 学习记录-java基础部分(一)
学习记录-java基础部分(一) 参考:GitHub上的知名项目:javaGuide : https://github.com/Snailclimb/JavaGuide/blob/master/doc ...
随机推荐
- ldap常用命令
单独查询用户信息 ldapsearch -D "cn=admin,dc=hrbeu,dc=edu,dc=cn" -b "ou=hbr,dc=hrbeu,dc=edu,dc ...
- logging 日志配用
第一步,创建一个logger: 第二步,创建一个handler,用于写入日志文件: 第三步,再创建一个handler,用于输出到控制台: 第四步,定义handler的输出格式: 第五步,将logger ...
- webapi_2 今天全是大经典案例
今天的案例又大又经典 我想想怎么搞呢因为要用到外联样式之类的了 写入内联也太大了 1. 先来一个单独小页面的吧 一个仿淘宝右侧侧边栏的案例 不多说都在注释里了 <!DOCTYPE html> ...
- 半吊子菜鸟学Web开发6 -- Vscode开发环境配置
1vscode上手一周不到,终于弄出点门路,终于弄清楚了点vscode的设置是什么样子的了....哭 2就我这两天的使用来看,一般vscode默认只让打开一个文件夹,然后在你打开的文件夹里面自动生成 ...
- 组合(n选k问题)
#include "iostream.h" #include "string.h" int a[100]; void dfs(int n,int k) { if ...
- kafka分布式的情况下,如何保证消息的顺序?
作者:可期链接:https://www.zhihu.com/question/266390197/answer/772404605来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- BFC优化?
块格式化上下文, 特性: 使 BFC 内部浮动元素不会到处乱跑: 和浮动元素产生边界.
- Oracle入门基础(二)一一过滤和排序
SQL> --查询10号部门的员工 SQL> select * from emp where deptno=10; EMPNO ENAME JOB MGR HIREDATE SAL COM ...
- 什么是 AQS ?
AQS 是 AbustactQueuedSynchronizer 的简称,它是一个 Java 提高的底层同步工具类,用一个 int 类型的变量表示同步状态,并提供了一系列的 CAS 操作来管理这个同步 ...
- ArrayList分别与LinkedList、Vector、Array的区别
ArrayList与LinkedList的区别 ArrayList底层是一个动态数组,LinkedList底层是双向链表 当随机访问List时(get和set操作),ArrayList比LinkedL ...