当前位置:   article > 正文

java web 总结_javaweb结果

javaweb结果

目录

1.servlet

1.1servlet介绍

1.2 servlet作用

1.3 servlet的开发步骤

1.4 servlet的配置

1.5访问方式

1.6 servlet 的运行

1.7servlet的生命周期:

1.8 servlet地址的设置:

1.9. ServletContext的使用

2.Http协议

2.1 Http协议

3. jsp

3.1的使用

3.2 jsp的运行

4.转发和重定向

5. cookie

5.2 cookie的有效期

5.3 cookie的特点

6. session

6.1 session 的使用

8. Filter

8.1的使用

8.2 Filter的生命周期

9.jsp的九个内置对象

10 EL表达式

10.1 expression language :el表达式

10.2 语法规则

10.3 el表达式的查找数据方式

10.4 el表达式可以做运算

10.5 el表达式的输出结果

10.6 jstl:jsp的标签库

10.7  jsp的include指令

总结:


1.servlet

1.1servlet介绍

Java web程序,类通过继承HttpServlet,重写service方法,配置这个servlet的url地址,把Java web程序,部署到tomcat软件中,然后启动tomcat软件,就可以通过浏览器访问url地址了

servlet是sun公司指定的一种用于扩展web服务器的功能组件规范

1.2 servlet作用

  • web服务器通常只能处理静态的资源(html,css,js...)为了解决动态的处理数据,就需要对web服务器的功能进行扩展,servlet就是用于处理动态数据的组件规范。
  • 组件:符合一个规范,完成部分功能的软件模块。比如Java中的servlet,jsp都属于组件。这些软件模块需要放在容器中运行,比如tomcat就属于容器。因此,servlet,jsp都需要放在tomcat容器中去允许
  • 容器:符合一定规范,能够运行组件的一种软件
  • servlet规范:使用servlet的时候,自定义类继承HttpServlet,重写service方法,那么久符合servlet规范

1.3 servlet的开发步骤

  • 新建的工程是一个Java web项目(maven中的webapp)
  • Servlet类,继承HttpServlet
    • 重写service方法
    • service(HttpServletRequest request , HttpServletResponse response)
    • request:请求
    • response:响应
  • Java web工程中的web.xml文件
    • web.xml文件名不能修改。(tomcat容器找web.xml文件)
    • 将Java类和浏览器访问的地址做一个映射mapping
    • 浏览器没有办法直接访问Java类中的方法,所以需要对Java类映射为一个浏览器能够访问的url地址
  • 打包(idea帮助完成)
    • 把web项目运行需要的文件按指定的文件结构保存
  • 部署(在idea中可以完成)
    • 把打包好的web程序放到tomcat的过程,就称为部署。
  • 启动容器
    • 容器启动之后,就可以通过浏览器,访问这个Java web项目了

1.4 servlet的配置

  1. 设置编码
  2. 获取参数 url
  3. 处理数据
  4. 响应结果

1.5访问方式

  • 先访问html页面,输入url地址,然后通过表单提交访问

接收前端提交的数据

  • request.getParameter(key),获取请求参数
  • getParameter(key)的返回值是String,使用的时候,需要注意数据类型的转换问题
  • 如果前端没有传入某个参数,使用getParameter(key),那么返回的值是null

响应结果

  • 通过response对象的getWriter() 方法,得到输出流
  • 通过输出流,输出字符串内容,作为响应结果
  • 设置响应结果的类型和字符编码的方式:
    • response.setContentType("text/html;charaset=utf-8");
      1. text/html ,这个浏览器能解析html格式
      2. application/josn,这个是浏览器能解析的json格式(后面会使用)
      3. 如果格式写错,浏览器就不能解析,会提示你下载错误

1.6 servlet 的运行

  • 浏览器与服务器建立连接(ip,port)

  • 浏览器向服务器发送请求(请求数据包)

  • 服务器tomcat解析请求数据包,创建request,response对象,将请求的参数保存在request对象中

  • tomcat创建Servlet对象

  • 调用service(request,response)

  • 服务器响应结果

  • 浏览器解析响应结果,渲染到网页上

  • 断开连接

1.7servlet的生命周期:

  • init :初始化 ,只执行一次
  • service :每次请求,执行很多次
  • destroy: 容器关闭,只执行一次

1.8 servlet地址的设置:

测试地址是否符合要求 , 静态资源是否被拦截。
        当浏览器发送请求的时候, tomcat 通过web.xml文件, 优先 访问servlet ,找到servlet类,就访问其service方法;如果没有servlet ,就 找静态资源, 如果找不到静态资源, 就响应404 .

  • / , 模糊匹配 , 除了jsp之外,其他都会被servlet匹配到。 : <url-pattern>/</url-pattern>
  • /* , 模糊匹配, 所有地址都会被匹配到。 : <url-pattern>/*</url-pattern>
  • *.xx , 模糊匹配,以某个固定后缀名结尾的地址 , 按后缀名进行匹配<urlpattern>*.do</url-pattern>
  • /xx , 精确地址,  <url-pattern>/mm</url-pattern> 说明访问地址,固定为/mm.
  • /xx.yy , 精确地址, <url-pattern>/mm.do</url-pattern> ,访问地址固定为: /mm.do

1.9. ServletContext的使用

应用程序执行期间都是同一个ServletContext对象,可以在所有请求中,获取该对象,获取该对象中的数据,操作该对象中的数据

  1. //servletContext:容器运行程序期间都有效,可以共享数据。
  2. // 容器停止运行,servletContext就无效了。
  3. servletContext servlContext = request.getServletContext();
  4. // 获取数据
  5. Object total = servletContext.getAttribute("total");
  6. // 设置数据
  7. servletContext.setAttribute("total" , 1);

servlet中数据可以存储的区域:

  • servlet的service方法中的变量

  • request对象:可以通过转发的方式,把数据转发到其他的数据当中

  • session对象:可以让一个登录用户在会话期间,直接使用session中的数据

  • servletContext对象:可以让所有请求在容器运行期间,直接使用servletContext中的数据

2.Http协议

2.1 Http协议

1. 通信方式

  • 建立连接
  • 发送请求(请求数据包)
  • 发送响应(响应数据包)
  • 断开连接

2. 数据包格式

  • 请求数据包
  • 响应式数据包

3. 请求方式

  • get
    • 请求参数在url后显示

    • 数据量比较小

    • 不安全

    • 不支持文件上传

    • get请求:浏览器地址直接访问; from表单中的method设置为get ; 超链接 ; 异步请求设置为get ​​​​​​​

  • post
    • 数据存放在消息体中

    • 数据量大

    • 安全

    • 能够支持文件上传

    • post请求:form表单中method属性设置为post ; 异步请求设置为post

  • put

3. jsp

3.1的使用

jsp是sum公司指定的一种用于服务器端的动态页面的技术规范,也是一种组件,依赖于容器(tomcat)进行运行。

jsp不需要在web.xml中进行配置,直接通过它的路径和文件名进行访问

jsp是一种运行在服务器端的一个页面,它里面可以包含html,嵌入一些Java代码,通过在tomcat容器中经过解析,输出html页面

  • servlet :数据处理和数据的展示(拼html 标签)

  • servlet+jsp:servlet做数据处理,jsp做数据的展示

    • servlet做数据展示的时候,不方便(编写代码的时候,维护代码的时候)

    • jsp:让数据的处理和数据的展示进行分离(解耦)

3.2 jsp的运行

jsp的本质就是servlet

  • 第一次访问jsp页面的时候,会将jsp页面转换为一个servlet类

  • html , js ,css 这种内容就直接使用输出语句拼接

  • 其他和Java相关的内容就按Java语法规则转换

4.转发和重定向

转发:

        一个请求完成部分功能,希望剩下的功能由另一个请求完成,这种时候使用转发

  • 一般使用servlet完成数据处理,转发数据到jsp页面,实现数据的展示

  • 转发可以通过request对象,把数据转发到另一个请求

  • 转发的本质就是一个请求,因为request对象不变(可以共享request中的数据)

  • 转发之后,浏览器地址显示的第一个请求的地址

重定向:

        某个请求完成之后,希望浏览器自动发起另一个请求,则使用重定向

  • 使用重定向的时候,浏览器消息头中接收到一个302状态码和url地址,浏览器根据这个状态码和url地址,自动发起请求

  • 重定向是完全不同的两个请求,是两个request对象,两个请求无法共享

  • 浏览器中显示的是第二个请求的地址

路径的写法:

  • 资源文件的路径(.js , css , 图片),表单提交的路径,超链接,重定向的路径,建议使用绝对路径

  • 转发的路径,建议使用相对路径。

  • servlet 的绝对路径 :/application context/servlet path. (application context 项目部署的时候设置的项目访问路径)

  • jsp , html 的的绝对路径 :/application context/文件的路径(webapp目录中文件的路径)
    • 各种资源文件,jsp ,html , 等保存的目录必须是webapp目录

5. cookie

        实现一个登录功能,记住密码

        提供一个用户可以输入用户名和密码的界面,有一个选项可以选择是否记住密码。

        提供一个请求,完成登录校验。( servlet) 根据用户名和密码查询数据库,返回结果(数据库的操作)

        密码怎么记住???

        使用cookie技术,然后把用户名和密码保存在浏览器中

        1. 登录的时候,如果用户选择了记住密码,需要把用户的用户名和密码给保存在cookie中,然后给浏览器,帮忙记住用户名和密码。

        2. 每次访问登录界面的时候,就需要把cookie中的数据获取出来,然后设置到这个输入框中

5.1cookie的使用​​​​​​​

  • 服务器端创建cookie对象,再添加到浏览器中

  • 浏览器保存响应结果中邀请你需要add的cookie对象,每个cookie和自己的请求的域名一致

  • 浏览器每次给服务器发送请求的时候,就会将请求对应的域名中保存的cookie数据一起发送到服务器

  • 服务器通过request获取cookie对象的数据,根据cookie的name找到value值,并使用value

​​​​​​​5.2 cookie的有效期

  • setMaxAge(正数) :有效期就是当前时间+正数的秒数

  • setMaxAge(0):立即失效

  • 没有调用setMxaAge或者setMaxAge(负数):表示会话期间有效,浏览器关闭,cookie失效了

    • 会话期间:浏览器第一次访问某个服务器,但浏览器关闭期间称为一个会话

5.3 cookie的特点

  • 用户可以删除cookie

  • 用户可以禁止使用cookie

  • 存储小于4k的内容

  • cookie的个数不能超过300个

  • 只能存储字符串

  • cookie不安全

6. session

6.1 session 的使用

  • session对象的获取,和请求中从浏览器中传输到服务器的cookie(JSESSIONID)有关系

  • 根据JSESSION这个cookie,去查找当前请求对应的session对象

如果没有设置有效期,默认有效期就是30分钟,如果会话结束了,session一般就无效了

invalidate方法设置session无效

登录校验:

  1. public class LoginServlet extends HttpServlet {
  2. @Override
  3. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  4. //编码转换
  5. req.setCharacterEncoding("utf-8");
  6. resp.setContentType("text/html;charset=utf-8");
  7. //获取参数
  8. String uname = req.getParameter("uname");
  9. String uname = req.getParameter("upwd");
  10. String save = req.getParameter("save");
  11. //判断用户名密码是否正确,正确就重定向到list.do
  12. UserService service = new UserService();
  13. User user = new User();
  14. user.setUname(Uname);
  15. User.setUpwd(Upwd);
  16. User us = service.findUser(user);
  17. if(us!=null){
  18. //登录成功,把用户信息保存到session对象中
  19. HttpSession session = req.getSession; //获取session对象
  20. session.setMaxInactiveInterval(5*60); // 设置session的有效期为5分钟
  21. session.setAttribute("myuser" , us); // 把数据设置到session对象中。
  22. if(save!=null){ //需要记住密码
  23. Cookie cookie = new Chookie("username",uname);
  24. Cookie cookie1 = new Chookie("password",upwd);
  25. cookie.setMaxAge(180*24*60*60); // 半年有效期
  26. cookie1.setMaxAge(180*24*60*60);
  27. resp.addCookie(cookie);
  28. resp.addCookie(cookie1);//通知浏览器
  29. }else{ //不需要被记住,就删除原来的cookie
  30. Cookie[] cookies = req.getCookies();
  31. for(Cookie c: cookies){
  32. if(c.getName().equals("username")||c.getName().equals("password")){
  33. c.setMaxAge(0) ;// 设置cookie立即无效
  34. resp.addCookie(c);
  35. }
  36. }
  37. }
  38. resp.sendRedirect(req.getContextPath() +"/list.do");
  39. }else {
  40. // 不正确, 转发index.jsp
  41. resp.sendRedirect(req.getContextPath() + "/index.jsp");
  42. }

其他请求中,获取session中的数据,进行判断

  1. public class BookInfoServlet extends HttpServlet {
  2. @Override
  3. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  4. //1.设置编码
  5. req.setCharacterEncoding("utf-8");
  6. resp.setContentType("text/html;charset=utf-8");
  7. //2.获取参数
  8. BookInfoService service = new BookInfoService();
  9. // -- ServletPath : 访问servlet 的路径(配置的servlet的url)
  10. String servletPath = req.getServletPath();
  11. //先判断用户是否登录过
  12. HttpSession session = req.getSession();
  13. Object myuser = session.getAttribute("myuser");
  14. if (myuser==null){
  15. resp.sendRedirect(req.getContextPath()+"/index.jsp"); //没有登陆过,直接重定向到登录界面
  16. return; //阻止后续代码的执行
  17. }
  18. ...
  19. ...

退出系统代码

jsp:

<a style="float: right" href="<%=request.getContextPath()%>/exit.do">退出系统</a>

servlet:

  1. if (servletPath.equals("/exit.do")) {
  2. session.invalidate();//设置session无效
  3. //重定向到登录页面
  4. resp.sendRedirect(req.getContextPath()+"/index.jsp");
  5. }

8. Filter

8.1的使用

sun公司提供的一种特殊的组件规范,主要用于拦截容器的调用过程

  • 规范:实现 Filter接口(实现 doFilter 方法)

  • 特殊:过滤器不能单独使用,需要和servlet进行配合使用

  • 组件:实现软件的某个模块功能,需要在容器中运行

  • 容器:一个特殊的软件,可以运行组件

  • 支持多个Filter ,已在web.xml中的配置的顺序进行过滤

8.2 Filter的生命周期

  • 实例化(调用构造函数)-- 1次

  • 初始化(调用init函数) -- 1次

  • 就绪(调用doFilter函数) -- 任意次

  • 销毁(调用destroy函数) -- 1次

9.jsp的九个内置对象

内置对象名字作用
out在jsp上输出内容
pageContext可以存储数据,这个数据只能在本页使用
request请求对应的request对象,获取request中的数据,在jsp页面使用
sessionsession对象,服务器端状态管理
application存储数据,可以在整个程序运行期间使用
response响应结果的对象
page类似于this
config初始化参数,存储在config中
exception异常对象,需要设置isErrorPage="true"

10 EL表达式

10.1 expression language :el表达式

el表达式,主要用于替换掉<%=xx%>输出语句

  • 在jsp页面中,可以直接通过el表达式,获取到存储在pageContext,request ,session ,application中的数据

10.2 语法规则

  • ${对象} --[<%=xx%>]

  • ${对象,属性名} --[<%=xx.getxxx()%>]

    • 对象要符合Java bean 的规范(描述类的属性私有化,提供公开的get/set方法。比如属性名叫abc,对应的方法getAbc/setAbc)

    • $(对象,属性名),这里的本质调用属性名对应的get方法

10.3 el表达式的查找数据方式

  • 从pageContext , request , session , application 等对象中,查找需要输出的对象

  • pageContext , request , session , application 如果出现了同名的key ,那么查找按小范围优选的原则查找

  • 可以通过pageScope , requestScope , sessionScope , applicatiorlScope指定查找范围。

10.4 el表达式可以做运算

  • 条件运算 : 结果是Boolean类型

  • 数学运算:运算结果

  • 逻辑运算 :结果是Boolean

  • empty运算 判断是否为空 :结果是Boolean

10.5 el表达式的输出结果

  • 如果没有key,输出的是空字符串

  • 如果有这个key,但是key对应的value值是null,输出的是空字符串

  • 其他情况,输出的是key对应的value值

10.6 jstl:jsp的标签库

jstl标签,用于替换掉jsp页面上的<%java代码%>

jsp页面上,如果有太多的java代码,对于jsp页面的修改,维护,前端人员都不友好​​​​​​​

jstl使用:

  • 导入jstl的jar包

在jsp页面上,使用taglib指令,把想用的标签,导入到jsp页面上,让jsp支持标签的使用

  • taglib:jsp固定的导入标签库的指令

  • prefix:前缀,给标签添加上前缀之后,可以和其他重名标签进行区分

  • uri:标签的访问地址

10.7  jsp的include指令

head.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <h3 style="color: green">xx , 下午好, 欢迎使用本系统!</h3>

其他jsp

<%@ include file="head.jsp"%>

总结:

        在java web 的学期阶段,很多细节容易忽略,然后记住的东西太少,在编写代码的时候很多代码也记不住,并且很多知识点没有办法用自己的理解总结出来,还是缺乏理解。在这个阶段的周测中也让我明白了很多不足的地方,平时的学习方法应该改变,不能只是一味的在老师的基础上改代码,应该从头要自己把思维理清楚过后才进行代码的编写,下周继续努力,加油。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/191740
推荐阅读
相关标签
  

闽ICP备14008679号