个人认为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");