JavaWeb基础

这篇博客详细介绍了JavaWeb的基础知识,包括动态web概念、web服务器、HTTP协议、Servlet的开发流程和原理、ServletContext、HttpServletRequest和HttpServletResponse的应用,以及Cookie、Session、JSP、JavaBean、MVC架构、Filter和Listener等内容,旨在帮助读者深入理解JavaWeb开发。
摘要由CSDN通过智能技术生成

JavaWeb

1.基本概念

1.前言

  • web,网页
  • 静态web
    • html,css
    • 提供给所有人看始终不会改变
  • 动态web
    • 提供给所有人看的数据始终会变化
    • 技术栈:JSP/Servlet,ASP,PHP

动态web资源技术开发技术统称为javaweb

2.web应用程序

应用程序编写完成之后,想给外界访问,需要一个服务器统一管理

3.动态web

image-20201111160954917

2.web服务器

1.JSP/Servlet

  • sun公司主推B/S架构
  • 基于java
  • 可以承载三高问题带来的影响
  • 语法像ASP

2.web服务器

服务器是被动操作,用来处理用户的请求和返回响应信息

  • IIS

    • 微软,ASP,window自带
  • Tomcat

    1. 下载Tomcat压缩包
    2. 解压Tomcat压缩包到/Library/下
    3. 终端输入cd /Library/Tomcat/bin
    4. sudo chmod 755 *.sh
    5. 启动——sudo sh ./startup.sh
    6. 关闭——sh ./shutdown.sh

    image-20201111163320267

    修改Tomcat的端口号

    <Connector port="8888" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    

3.HTTP

HTTP(超文本传输协议),通常运行在TCP上

1.两个时代

  • http1.0
    • HTTP/1.0:短连接,获取一个资源后断开
  • http1.1
    • HTTP1.1:长连接,获取多个资源

HTTP格式

4.Servlet

1.开发流程

本质:一个接口,一个统一的web应用规范,一个协议

  • 编写一个类,实现Servlet接口
  • 把开发好的java类部署到web服务器中

把实现了Servlet接口的java程序叫做Servlet

2.HelloServlet

开发流程
  1. 构建普通Maven工程,删掉src目录,以后学习就在这个项目中建立Moudel,这个空的工程就是Maven主工程

  2. 关于Maven父子工程的理解:

    • 父项目中会多出
    <modules>
      	<module>study</module>
    </modules>
    
    • 子项目中会有
    <parent>
        <artifactId>com.hznu.ch</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    

    父项目中的依赖子项目都可以使用,相当于继承父类

  3. Maven结构图

    • image-20201112103917096
    • image-20201112092850556

  4. 编写Servlet程序

    1. 编写普通类,实现Servlet接口,这里继承HttpServlet,并重写方法

    image-20201111205939071

    public class ServletTest extends HttpServlet {
         
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            //设置字符编码
            request.setCharacterEncoding("utf8");
            //从 request 对象中获取username,password
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            request.setAttribute("username", username);
            request.setAttribute("password", password);
            request.getRequestDispatcher("/new.jsp").forward(request, response);
        }
    }
    
    1. 编写jsp页面
    <html>
    <body>
    <h2>This is new Page</h2>
    username: <%=request.getParameter("username") %>
    <br>
    password: <%=request.getParameter("password") %>
    </body>
    </html>
    
  5. 编写Servlet映射(web.xml)

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <!--映射名-->
        <servlet-name>ServletTest</servlet-name>
        <!--对应的类-->
        <servlet-class>com.hznu.ch.servlet.ServletTest</servlet-class>
    </servlet>

    <servlet-mapping>
        <!--映射名-->
        <servlet-name>ServletTest</servlet-name>
        <!--url-->
        <url-pattern>/ServletTest</url-pattern>
    </servlet-mapping>
</web-app>

img

  1. 配置Tomcat

image-20201112104426230

image-20201112104528017

  1. 访问资源文件

image-20201112104631946

参考文献

idea搭建可运行Servlet的Web项目[maven]

3.Mapping

  • 一个Servlet对应一个页面
<servlet>
    <servlet-name>ServletTest</servlet-name>
    <servlet-class>com.hznu.ch.servlet.ServletTest</servlet-class>
</servlet>
  • 一个Servlet对应多个页面
<servlet-mapping>
    <servlet-name>ServletTest</servlet-name>
    <url-pattern>/ServletTest</url-pattern>
</servlet-mapping>
  • 添加后缀

*.ch将ch后缀名的url映射到某个Servlet

4.优先级问题

  1. 精确匹配,servlet-mapping1:/user/users.html,servlet-mapping2:/*。当一个请求http: //localhost:8080/appDemo/user/users.html来的时候,servlet-mapping1匹配到,不再用servlet-mapping2匹配
  2. 路径匹配,先最长路径匹配,再最短路径匹配servlet-mapping1:/user/,servlet-mapping2:/。当一个请求http: //localhost:8080/appDemo/user/users.html来的时候,servlet-mapping1匹配到,不再用servlet-mapping2匹配
  3. 扩展名匹配,servlet-mapping1:/user/,servlet-mapping2:.action。当一个请求http: //localhost:8080/appDemo/user/addUser.action来的时候,servlet-mapping1匹配到,不再用servlet-mapping2匹配
  4. 缺省匹配,以上都找不到servlet,就用默认的servlet,配置为/

5.原理

明确几件事:Tomcat的作用是将Socket传来的数据变成ServletRequest类,交给Servlet处理

具体可以查看知乎大佬,里面有一个例子可以明白Tomcat做的最基本的事情,我来总结一下哈

Tomcat对Socket数据进行封装,请求包装成ServletRequest类,响应包装成ServletResponse类,然后都传给我们实现了Servlet接口的类,对这两个数据进行处理,再由Tomcat返回给客户端

Tomcat和Servlet的协同关系以及Servlet的生命周期

img

6.ServletContext

image-20201113182716449

1.Servlet通信
//存入数据到ServletContext
public class HelloServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        ServletContext context = this.getServletContext();
        context.setAttribute("username", "陈恒");
    }
}

//读取ServletContext数据
public class GetNameServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        ServletContext context = this.getServletContext();
        resp.getWriter().print("姓名:" + context.getAttribute("username").toString());
    }
}
2.获取初始化参数
public class HelloServlet extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        ServletContext context = this.getServletContext();
        resp.getWriter().print("参数:" + context.getInitParameter("url"));
    }
}
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!欢迎您对JavaWeb基础学习的兴趣。如果您是初学者,我可以为您提供一些入门的建议和学习资源。以下是一些建议: 1. Java基础知识:在学习JavaWeb之前,首先需要掌握Java基础知识,包括面向对象编程、控制流、集合框架等。您可以通过在线教程、书籍或视频教程学习这些基础知识。 2. HTML和CSS:了解HTML和CSS是非常重要的,因为JavaWeb开发涉及到与前端页面的交互。您可以通过在线教程或相关书籍学习HTML和CSS的基础知识。 3. ServletServletJavaWeb的核心技术之一,它用于处理HTTP请求和响应。学习Servlet可以帮助您理解JavaWeb开发的基本原理和流程。您可以通过阅读相关的文档、教程或者参考书籍来学习Servlet。 4. JSP:JSP(JavaServer Pages)是一种用于创建动态Web页面的技术。它可以帮助您将Java代码嵌入到HTML中,从而实现动态内容的生成和展示。学习JSP可以让您更高效地开发JavaWeb应用程序。 5. 数据库知识:JavaWeb应用程序通常需要与数据库进行交互,因此了解数据库的基本知识也是必要的。您可以学习关系型数据库(如MySQL)的基本概念、SQL语句的使用以及Java与数据库的连接。 6. 框架和工具:学习一些常用的JavaWeb框架和工具,例如Spring、Hibernate等,可以提高您的开发效率和代码质量。 除了以上建议,您还可以通过参加培训班、加入开发社区或者实践项目来加强自己的JavaWeb技能。希望以上建议对您有所帮助!如果您有任何进一步的问题,请随时向我提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值