0416-知识点
1 servlet相关API
2 创建servlet的三种方式
3 sevlet中的request,response,session.application.out对象
------------------------------------------
一 servlet相关API
1 包: javax.servlet
javax.servlet.http :与HTTP协议相关的类或接口
2 顶级接口: javax.servlet.Servlet
方法: init() , 初始化方法
service() :接收请求,并给出响应的方法
destroy() :销毁方法
3 实现类: abstract javax.servlet. GenericServlet implements Servlet
重写了init() ,destroy()方法
但没有重写service方法
4 实现类 : javax.servlet.http.HttpServlet extends GenericServlet
重写父类中的service方法
同时重载要对http协议中的8种请求写service方法
8种请求:get,post,head,options,delete,put,TRACE,CONNECT
二 创建Servlet的三种方式
1 定义一个类,实现javax.servlet.Servlet接口
重写接口中所有抽象方法
2 定义一个类,继承javax.servlet.GenericServlet ,
重写service方法
3 定义一个类,继承javax.servlet.http.HttpServlet
重写doGet或doPost
三 servlet中的request response session application.out对象
1 request对象 -->javax.servlet.http.HttpServletRequest
常用方法:
setCharacterEncoding():设置编码格式
String getParameter("name") :根据请求中的name获取对应值
1) 表单中元素的值
2) 重写url中的值 : index.jsp?名=值&名=值
String[] getParameterValues("name")
作用域:
setAttribute(String key,Object obj) :给作用域中存值
Object getAttribute(String key) :获取作用域中指定key的值
removeAttribute(String key) :移除作用域中的值
请求转发的方法:
request.getRequestDispatcher("/regUser.jsp").forward(request,response);
//获取项目根目录
reqeust.getContextPath()
2 response对象 -->javax.servlet.http.HttpServletResponse
重定向:
response.sendRedirect(String path);
3 session(会话)-->javax.http.HttpSession
1) 获取session对象
request.getSession()
2) 作用域:
setAttribute(String key,Object obj) :给作用域中存值(捕捉到的错误信息存到会话级别的session里面,用于给用户显示错误信息)
Object getAttribute(String key) :获取作用域中指定key的值
removeAttribute(String key) :移除作用域中的值
4 application对象 -->javax.servlet.ServletContext
1) 获取application对象
ServletContext application = this.getServletContext();
2) 作用域:
removeAttribute(String key) :移除作用域中的值
Object getAttribute(String key) :获取作用域中指定key的值
removeAttribute(String key) :移除作用域中的值
5 out对象 --> java.io.PrintWriter对象
1) 获取方式:
printWriter out = response.getWriter();
2) 方法
write()
print()
println() :带换行符
flush() :刷新方法
close() :关闭方法
------------------------------------------------
登录与注册中的相关问题:
实现登录和注册 在控制层捕捉错误存储作用域提示相关错误信息 实现MD5加密 04.16-CSDN博客
1 使用哪个作用域存储用户信息
2 使用哪个作用域存储错误信息,同时在页面上如何获取错误信息及展示
--------------------------------
1 注册:
1) mapper中定义两个sql
1.1) 根据用户名查询用户的方法
1.2) 添加新用户的方法
2) service中注册的方法
2.1) 调用mapper中的用户名查询用户的方法
2.2) 判断返回的user是否为null, 不为null ,则抛出异常: NameIsExistException
2.3) 为null ,则调用mapper中的添加方法
3) 注册的控制器 :"/regUser.do"
3.1) 接收注册表单中的数据, 密码加密
同时把数据封装成一个user对象
3.2) 调用业务中注册的方法
3.3) 如果有异常,则使用session存储异常信息
request.getSession().setAttribute("errMsg",e.getMessage())
重定回到注册页面
3.4) 无异常 ,则直接重定向到登录页面
4) 页面显示错误信息
<span> ${errMsg}</span>
//从session中移除错误信息
<c:remove var="errMsg"></c:remove>
二 登录
1) mapper中定义SQL
1.1) 根据用户名查询用户的方法
2) service中定义登录方法
User login(String userName,String userPwd) throws NameORPwdErrorException
2.1) 调用mapper中的用户名查询用户的方法
2.2) 如果返回值不为null,则判断密码是否相等,相等,则返回user对象
2.2) 如果为null,或密码不相等,则抛出 NameORPwdErrorException
3) 登录控制器 "/login.do"
3.1) 接收登录表单中的数据, 密码加密
3.2) 调用业务中登录的方法
3.3) 如果有异常,则使用session存储异常信息
request.getSession().setAttribute("errMsg",e.getMessage())
重定回到登录页面
3.4) 无异常
使用session存储用户 :request.getSession().setAttribute("user",user)
重定向到index.jsp ,在此页面显示用户的昵称
4) 登录显示错误信息
<span> ${errMsg}</span>
//从session中移除错误信息
<c:remove var="errMsg"></c:remove>