Servlet

Servlet

servlet是由sun公司开发的动态web的一门技术

sun在这些API中提供一个接口叫Servlet,使用需要两个步骤:

  1. 编写一个类实现Servlet接口

  2. 把开发好的类部署到web服务器中

helloServlet

构建一个普通的项目先删除src目录以后学习就在这个项目里建立moudel

首先在pom.xml中导入javax.servlet-api的依赖

 

然后在main下建立一个java包

 

 

然后再创建一个包里边开始写类

 

 

都要进行继承,然后重写,一般重写doGet和doPost两个方法

里边是写的一些方法

然后打开webapp目录下的WEB-INF下的web.xml

 

 

 

ServletContext

实现数据的共享,我们可以在一个servlet中保存数据,可以在另一个servlet中拿到数据

例子:

 

 

 

 

最后配置web.xml

 

 

要先调用hiservlet再调用helloservlet才能有效


拿到context-param信息

 

 

 

 

请求转发

 

 

读取资源文件

新建一个

 

 

 

然后再调整web.xml

HttpServletResponse

当服务端接收到客户端的请求之后,分别创建一个代表请求的HttpServletRequest对象和一个代表响应的HttpServletResponse对象

如果获取客户端请求过来的参数就用HttpServletRequest,如果响应一些信息就用HttpServletResponse。

常见应用

  1. 像浏览器输出消息

  2. 下载文件

    1. 要获取下载文件的路径

    2. 文件名是什么

    3. 让浏览器支持我们下载的东西

    4. 获取下载文件输入流

    5. 创建缓冲区

    6. 获取Outputstream对象

    7. 将Fileoutputstream流放入缓冲区

    8. 用outputstream将缓冲区数据输入到客户端

     

 

 

验证码功能

 

 

  1. 实现重定向(重点)

一个web资源收到客户端请求后,他会通知客户端去访问另一个web资源这个过程叫重定向

常见

用户登录

第三行是前两行的实现

//resp.setHeader("location","/untitled1_war/t04");
//resp.setStatus(302);
resp.sendRedirect("/untitled1_war/t04");

面试题:

重定向和转发的区别:

相同点:页面会实现跳转

不同点:

  1. 请求转发时,url不会变

  2. 重定向时url会发生变化

登陆并返回参数跳转至新的页面

 

 

 

 

HttpServletRequest

应用场景

获取前端的参数

 

 

记得改变web.xml的版本参数在1.4以上

Cookie session

cookie

客户端技术(响应,请求)

  1. 从请求中拿到cookie信息

  2. 服务器响应给客户端cookie

 

 

 

 

编码解码

URLEncoder

URLDecoder

session(重点)

服务器技术,可以保存用户会话信息,我们可以把信息或者数据放在session中

服务器会给每一个用户创建一个session对象:sessionID

一个session独占一个浏览器,只要浏览器没关,这个session就存在

用途:保存登陆信息,保存购物车信息。。。

注销

在web.xml中注销

    <session-config>
      <session-timeout>15</session-timeout>
  </session-config>

手动注销

        HttpSession session = req.getSession();
      session.removeAttribute("name");
      session.invalidate();

 

session和cookie的区别

cookie是把用户数据写给用户浏览器,浏览器baocun

session把用户数据优写到独占的session中,服务端保存

session由服务器创建

JSP

java server pages:服务器端页面,和servlet一样,用于动态web技术 本质就是servlet

在jsp页面中:只要是java代码就会原封不动的输出;如果是html代码,就会被转化为 out.write(" ");

jsp基础语法

jsp表达式

<%--jsp表达式
作用:将程序的输出输出到客户端
<%= 变量或者表达式 %> --%>

<%= new java.util.Date() %>

jsp脚本片段

<%--jsp脚本片段--%>
<%
int sum=10;
  for (int i = 0; i <sum ; i++) {
      sum+=i;
  }
  out.print("<h1>sum="+sum+"</h1>");
%>

jsp声明

<%!  %>

九大内置对象

pagecontext

request

response

session

application

config

out

page

excaption

el表达式

${ }

<% application.setAttribute("lt1","1");  //从服务器打开到关闭都有效
session.setAttribute("lt2","2"); //浏览器打开到关闭都有效
pageContext.setAttribute("lt3","3");//一个页面中有效
request.setAttribute("lt4","4");// 一次请求中有效,请求转发会携带这个数据
%>
<% String lt1 = (String) pageContext.getAttribute("lt1");
  String lt2 = (String) pageContext.getAttribute("lt2");
  String lt3 = (String) pageContext.getAttribute("lt3");
  String lt4 = (String) pageContext.getAttribute("lt4");
  String lt5 = (String) pageContext.getAttribute("lt5");%>
$(lt1)

JSP标签,JSTL标签,EL表达式

el:获取数据,执行运算,获取web开发常用对象

jsp标签

<%--指向页面传递参数--%>
<jsp:forward page="/test.jsp">
  <jsp:param name="lt1" value="lt1"/>
  <jsp:param name="lt2" value="lt2"/>
</jsp:forward>

<%--取出参数--%>
<%=request.getParameter("lt1")%>
<%=request.getParameter("lt2")%>

JSTL

<form action="test01.jsp" method="get">
   <input type="text" name="user" value="${param.user}">
   <input type="submit"value="登陆">

</form>

<c:if test="${param.user=='1'}" var="isAdmin">
   <c:out value="管理员欢迎"/>
</c:if>
<c:out value="${isAdmin}"/>

javaBean

  1. 无参构造

  2. 属性私有化

  3. 必须有对应的get/set方法

一般和数据库字段映射 ORM:对象关系映射

MVC三层架构

model view controller 模型视图控制器

filter

  1. 导包

    注意导入的是javax.servlet包

  2. 编写过滤器

    1.   
          public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
      servletRequest.setCharacterEncoding("utf-8");
      servletResponse.setCharacterEncoding("utf-8");
      filterChain.doFilter(servletRequest,servletResponse);
      }
  3. 在web.xml中配置Filter

    

<filter>
<filter-name>test05</filter-name>
<filter-class>com.lt.filter.UnicodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>test05</filter-name>
<url-pattern>/test04/*</url-pattern>
</filter-mapping>

 

监听器

实现监听器

在web.xml中注册监听器

Juilt单元测试

可以执行没有main方法的方法

import org.junit.Test;

public class test001 {
  @Test
  public void test(){
      System.out.println("你好");
}
}

JDBC

 

 

 事务。

posted @ 2020-03-13 11:13  坚持_第一天  阅读(148)  评论(0)    收藏  举报