Java Web学习笔记一

一、软件两种形式:

1.B/S架构:
B/S也就是我们常用的浏览器/服务器端;
2.C/S架构:
客户端/服务器端;这种方式虽然也常用,但是需要下载相应的软件来搭配使用;

二、Web概述:

1.Web资源:

在浏览器中,Web资源分为两种:一种是静态资源、一种是动态资源;
区别: 静态资源是写死在HTML、css、js之上的音频,文本、视频等;而动态资源则是来自于服务器端的数据库之内的;

2.常见的Web服务器:

名称种类公司描述
WebLogic大型服务器Oracle收费 非开源 支持全部JavaEE规范
WebSphere大型服务器IBM收费 非开源 支持全部JavaEE规范
Glass Fish中型服务器Oracle免费 开源 支持部分JavaEE规范
JBoss中型服务器JBoss免费 开源 支持部分JavaEE规范
Resin小型服务器Caucho免费 开源 支持部分JavaEE规范
Jetty内置式服务器Jetty/eclipse免费 开源 支持部分JavaEE规范
Tomcat小型服务器Apache免费 开源 支持部分JavaEE规范

3.简单模拟Web服务器:

 public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(998);
        Socket socket = server.accept();

        FileInputStream fis = new FileInputStream(new File("G:\\代码\\java\\qrsx\\demo4\\webdemo\\index.html"));

        byte[] bytes = new byte[1024];
        int len = -1;

        OutputStream out = socket.getOutputStream();
        while ((len = fis.read(bytes)) != -1) {
            out.write(len);
        }
        fis.close();
        socket.close();
        server.close();
    }

多线程版本:

public class Mycat extends Thread {

    private Socket socket;

    private File file = new File("G:\\代码\\java\\qrsx\\demo4\\webdemo\\index.html");

    public Mycat(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            OutputStream out = socket.getOutputStream();
            FileInputStream fis = new FileInputStream(file);
            byte[] bytes = new byte[1024];
            int len = -1;
            while ((len = fis.read(bytes)) != -1) {
                out.write(bytes);
            }
            out.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(998);
        while (true) {
            Socket socket = server.accept();
            Mycat mycat = new Mycat(socket);
            mycat.start();
        }
    }
}

三、Tomcat:

1.目录结构:

目录:内容:
bin存放tomcat所有可执行文件
conf存放tomcat的配置文件
lib存储tomcat运行过程中用到的jar包,存放类库的地方
logs存放tomcat启动的日志文件
temp存放产生的临时文件
webapps存储部署项目的位置
如果项目需要被外网访问,则需要部署到该目录
work存储tomcat运行过程中编译产生的文件
比如jsp编译后的文件

2.启动常见问题:

  1. 服务器启动一闪而过:
    • 问题:没有配值Java_home
    • 解决方式:配置Java_home
  2. tomcat默认端口被占用:
    解决方式:
    1. 杀死占用8080端口的程序
    2. 修改默认端口;在conf/server.xml的69行

3.Web项目的部署方式:

  1. 直接将项目复制到webapps目录下
  2. 配置虚拟目录:
    项目可以存储在任何位置,但是要在conf / server.xml配置,这里的项目名也就是你访问的名字
  		 <Context path="/项目名称" docBase="文件路径" /> 
  1. 在conf / Catalina目录下配置独立的xml文件,注意,这里的xml文件的文件名就是你访问的名字:
  			<Context docBase="文件路径" />

四、Servlet:

1.概述:

Servlet全称:Server Applet
可以理解为服务器小程序
一个运行在服务器端的小程序(其实就是一个Java类)

2.作用:

  1. 接受请求:服务器接受浏览器发送的请求
  2. 响应数据:服务器返回数据给浏览器的过程

3.Servlet开发步骤:

  1. 创建一个类,实现Servlet接口或者继承实现了Servlet接口的类
  2. 根据需求,实现接口中的方法,或者重写继承类的方法
  3. 在相应的方法中,处理请求,响应数据
  4. 配置Servlet访问路径(xml配置或者注解配置)
  5. 项目部署
  6. 打开浏览器访问servlet

样例代码:

//这就是注解配置的方式
@WebServlet(urlPatterns = "/login")
//urlPatterns相当于xml里面的url-pattern
public class loginServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        PrintWriter writer = servletResponse.getWriter();
        writer.print("hello ps servlet");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

XML配置:


    <servlet>
        <!--servlet名字-->
        <servlet-name>login</servlet-name>
            <!--servlet路径-->
        <servlet-class>Servlet.loginServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
            <!--servlet名字-->
        <servlet-name>login</servlet-name>
            <!--前端页面访问地址,必须用-->
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

4.servlet生命周期

  1. Servlet由web容器创建(tomcat服务器)
  2. Servlet在浏览器第一次访问的时候创建,且只会构造生成一个对象
  3. Servlet的service方法在每次访问的时候调用执行
  4. Servlet销毁:只会在服务器关闭或者重启的时候执行,且只有一次
  5. Servlet的init方法也只会执行一次,浏览器第一次访问的时候,分别调用构造方法和init方法;

5.servlet体系结构:

在这里插入图片描述
注意:在使用过程中,由于处理都是Http的请求,所以都直接继承HttpServlet来编写代码

6.HttpServlet

开发步骤:

由于它内部已经做过一定程度的修改和编写,所以在使用中,只需要很短的步骤就可以使用了;

  1. 创建Java类继承HttpServlet
  2. 重写doGet和doPost方法

其他步骤和之前直接实现Servlet接口的方式一致

样例代码:

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.设置请求格式,防止乱码
        request.setCharacterEncoding("utf-8");
        //2.获取请求体的信息
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //3.验证登录是否成功
        //这里一般调用数据库查询,查询得到返回1,查不到返回0
        int flag = 0;
        //4.根据结果返回数值
        if (flag == 0) {
            //5.没有成功,页面不动,继续等待输入
            //重定向方式
            response.sendRedirect("login.html");
        } else {
            //6.成功登录进入主页面
            //6.1记录请求域信息,把信息传递给下一个页面
            request.setAttribute("username", username);
            //6.2页面跳转
            //跳转方式
            request.getRequestDispatcher("index.jsp").forward(request, response);
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	//因为数据来了,之后是一样的,所以很多时候没必要分开写,所以可以直接调用
        this.doPost(request, response);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值