B站狂神说Javaweb笔记

一:maven包的导入

junit junit 4.11

二:创建模块,然后再创建子模块(子模块继承父类模块)

三:Maven的使用:

父会生成:

servlet-01
servlet-02

子会生成:

javaweb-02servlet
cn.zafu
1.0-SNAPSHOT

四:编写servlet

1,//响应流
PrintWriter writer = resp.getWriter();
2,write.print(“hello,servlet”)

五:配置映射路径

hello cn.zafu.servlet.HelloServlet hello /hello

六:一个servlet可以指定多个映射路径,可以指定通用路径

七:ServletContext

一个web容器启动时,会为创建一个对应的ServletContext对象,它代表了当前web应用;
1,数据的共享
我们在一个Servlet中通过servlerContext对象保存(set)的数据,可以在另一个servlet通过servlerContext对象get到
ServletContext servletContext = this.getServletContext();
String username = “旭”;
servletContext.setAttribute(“username”,username);//将一个数据保存到了ServletContext中
另一个Servlet获取数据
String username = (String)context.getAttribute(“username”);
//设置响应格式,否则中文默认GBK格式在浏览器上显示会乱码
resp.setContentType(“text/html”);
resp.setCharacterEncoding(“utf-8”);

    resp.getWriter().print("名字"+username);

2,请求转发
区分:重定向与转发
RequestDispatcher requestDispatcher = context.getRequestDispatcher("/gp");//转发的请求路径
requestDispatcher.forward(req,resp);

八:验证码功能的实现:

package com.kuang.servlet;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

public class ImageServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    //如何让浏览器3秒自动刷新一次;
    resp.setHeader("refresh","3");
    
    //在内存中创建一个图片
    BufferedImage image = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB);
    //得到图片
    Graphics2D g = (Graphics2D) image.getGraphics(); //笔
    //设置图片的背景颜色
    g.setColor(Color.white);
    g.fillRect(0,0,80,20);
    //给图片写数据
    g.setColor(Color.BLUE);
    g.setFont(new Font(null,Font.BOLD,20));
    g.drawString(makeNum(),0,20);

    //告诉浏览器,这个请求用图片的方式打开
    resp.setContentType("image/jpeg");
    //网站存在缓存,不让浏览器缓存
    resp.setDateHeader("expires",-1);
    resp.setHeader("Cache-Control","no-cache");
    resp.setHeader("Pragma","no-cache");

    //把图片写给浏览器
    ImageIO.write(image,"jpg", resp.getOutputStream());

}

//生成随机数
private String makeNum(){
    Random random = new Random();
    String num = random.nextInt(9999999) + "";
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < 7-num.length() ; i++) {
        sb.append("0");
    }
    num = sb.toString() + num;
    return num;
}


@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doGet(req, resp);
}

}

九:Cookie.Session

会话的解析:打开浏览器点击了超链接,访问了web资源关闭浏览器这个过程称之为会话。
有状态的会话:一个同学进入了教室,下次再来教室我们知道这个同学
1,服务端给客户端一个 信件,客户端下次访问服务端带上信件就可以了; cookie
2,服务器登记你来过了,下次你来的时候我来匹配你; seesion

十:保存两种会话技术

1,cookie(客户端技术)
2,session(服务器技术)服务器技术,利用这个技术,可以保存用户的会话信息? 我们可以把信息或者数据放在Session中!
3,sessionID每一个用户只有一个

创建一个自定义列表

Markdown
Text-to-HTML conversion tool
Authors
John
Luke

十一:使用session

package com.kuang.servlet;

import com.kuang.pojo.Person;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;

public class SessionDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    //解决乱码问题
    req.setCharacterEncoding("UTF-8");
    resp.setCharacterEncoding("UTF-8");
    resp.setContentType("text/html;charset=utf-8");
    
    //得到Session
    HttpSession session = req.getSession();
    //给Session中存东西
    session.setAttribute("name",new Person("秦疆",1));
    //获取Session的ID
    String sessionId = session.getId();

    //判断Session是不是新创建
    if (session.isNew()){
        resp.getWriter().write("session创建成功,ID:"+sessionId);
    }else {
        resp.getWriter().write("session以及在服务器中存在了,ID:"+sessionId);
    }

    //Session创建的时候做了什么事情;

// Cookie cookie = new Cookie(“JSESSIONID”,sessionId);
// resp.addCookie(cookie);

}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doGet(req, resp);
}

}
//得到Session
HttpSession session = req.getSession();

Person person = (Person) session.getAttribute(“name”);

System.out.println(person.toString());

HttpSession session = req.getSession();
session.removeAttribute(“name”);
//手动注销Session
session.invalidate();

十二:会话自动过期:web.xml

15

十三:JSP

动态web技术
1,可以写入Java代码
2,类似于html
jsp原理:其实就是转化成一个Servlet类
3,
<%–JSP表达式
作用:用来将程序的输出,输出到客户端
<%= 变量或者表达式%>
–%>
<%= new java.util.Date()%>
4, jsp表达式
<%–jsp脚本片段–%>
<%
int sum = 0;
for (int i = 1; i <=100 ; i++) {
sum+=i;
}
out.println(“

Sum=”+sum+"

");
%>
5,脚本片段
<%
int x = 10;
out.println(x);
%>

这是一个JSP文档

<% int y = 2; out.println(y); %>

<%–在代码嵌入HTML元素–%>
<%
for (int i = 0; i < 5; i++) {
%>

Hello,World <%=i%>


<%
}
%>
6,jsp声明
<%!
static {
System.out.println(“Loading Servlet!”);
}

private int globalVar = 0;

public void kuang(){
  System.out.println("进入了方法Kuang!");
}

%>
7,jsp指令
<%@page args… %>
<%@include file=""%>

<%–@include会将两个页面合二为一–%>

<%@include file=“common/header.jsp”%>

网页主体

<%@include file=“common/footer.jsp”%>


<%–jSP标签
jsp:include:拼接页面,本质还是三个
–%>
<jsp:include page="/common/header.jsp"/>

网页主体

8,9大内置对象 PageContext 存东西 Request 存东西 Response Session 存东西 Application 【SerlvetContext】 存东西 config 【SerlvetConfig】 out page ,不用了解 exception pageContext.setAttribute("name1","秦疆1号"); //保存的数据只在一个页面中有效 request.setAttribute("name2","秦疆2号"); //保存的数据只在一次请求中有效,请求转发会携带这个数据 session.setAttribute("name3","秦疆3号"); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器 application.setAttribute("name4","秦疆4号"); //保存的数据只在服务器中有效,从打开服务器到关闭服务器 9,jsp标签,jstl标签,el表达式 导入: javax.servlet.jsp.jstl jstl-api 1.2 taglibs standard 1.1.2 EL表达式: ${ } 10,jsp标签 <%--jsp:include--%>

<%–
http://localhost:8080/jsptag.jsp?name=kuangshen&age=12
–%>

<jsp:forward page="/jsptag2.jsp">
<jsp:param name=“name” value=“kuangshen”></jsp:param>
<jsp:param name=“age” value=“12”></jsp:param>
</jsp:forward>
11,JavaBean实体类
实体类

JavaBean有特定的写法:

必须要有一个无参构造
属性必须私有化
必须有对应的get/set方法;
一般用来和数据库的字段做映射 ORM;

ORM :对象关系映射

表—>类
字段–>属性
行记录---->对象

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值