JavaWeb总结


使用Java开发Web服务的技术,统称为JavaWeb。

B/S与C/S模式


  • B/S:Browser/Server 浏览器/服务器模式

  • 用户只需要一个浏览器即可访问服务器

  • C/S:Clint/Server 客户端/服务器模式

  • 用户需要下载客户端才能访问服务器

网站


用户通过浏览器访问某个域名或IP地址时,浏览到的综合性页面

实际就是发布在服务器上的一个应用程序,用户通过浏览器访问该程序。

网页


网站中的一个页面

  • 静态页面:所有人看到的数据都一致

  • 动态页面:不同的人看到的页面中的数据不一致

JavaWeb就是B/S模式下的软件开发,开发综合性的服务网站。

网络服务器


部署Web项目的平台。

Tomcat


由Apache、Sun和其他公司及个人共同开发的web服务器。

免费、开源、轻量级,在中小型系统中普遍被使用。

是开发和调试Web项目的首选。

编写Servlet的步骤


1.在项目中导入Servlet相关依赖

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>

2.在项目的java目录下,创建一个类,继承HttpServlet,重写doGet和doPost方法

通常用户无论发送的是get还是post请求,实际都会执行同一件事情。

为了不将代码重复写两遍,可以在doPost方法中调用doGet方法或在doGet方法中调用doPost方法

packagecom.hqyj.servlet;
​
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjava.io.IOException;
​
/*
*   Servlet是运行在服务器上的应用程序
*   编写一个Servlet的步骤
*   1.创建一个类型,继承HttpServlet
*   2.重写doGet和doPost方法
*   3.在web.xml中设置请求该Servlet的URL地址
* */
public class FirstServletextendsHttpServlet {
​
    @Override
    protected void doPost(HttpServletRequestreq, HttpServletResponseresp) {
        //只需编写一遍代码
    }
​
    @Override
    protected void doGet(HttpServletRequestreq, HttpServletResponseresp) {
        //为了不重复编写代码,在这get中调用post或在post中调用get
        doPost(req, resp);
    }
}

3.在web.xml中设置Servlet的请求映射

<!--声明一个Servlet-->
<servlet>
    <!--自定义Servlet的名称-->
    <servlet-name>firstServlet</servlet-name>
    <!--Servlet类所在完整路径(全限定名)-->
    <servlet-class>com.hqyj.servlet.FirstServlet</servlet-class>
</servlet>
​
<!--设置某个Servlet的请求映射-->
<servlet-mapping>
    <!--指定要设置映射的Servlet-->
    <servlet-name>firstServlet</servlet-name>
    <!--设置请求映射,以/开头-->
    <url-pattern>/first</url-pattern>
</servlet-mapping>

4.访问Servlet

至此,重启tomcat,访问"项目上下文地址/first",就表示访问FirstServlet类。

如果是通过浏览器地址栏访问,相当于get请求,执行servlet中的doGet方法

三层架构


在软件开发中,并不是将所有功能都交给一个类去实现,而是要将其进行分层,从而达到"高内聚、低耦合"的目的。

低耦合是指降低各个模块之间的关联程度,这样便于开发和维护,每个模块各司其职。

高内聚是指每个模块内的功能不可再分。

比如要用积木拼出来一辆车,不要把所有积木放在一起拼,这样其中一部分出现问题,就会影响到其他地方。

最好的做法是先将车的各个组件拼接完成(解耦),每个组件都是完整的不可再分的整体(高内聚),最终再把各个组件拼接到一起。

这样便于发现问题解决问题,不影响其他模块。

通常所说的三层架构中的三层,是指“数据访问层、业务逻辑层和视图表现层

  • 数据访问层,用于连接数据库,对数据做增删改查的操作

  • 业务逻辑层,用于处理业务逻辑,在适当的情况下调用数据访问层中的方法

  • 视图表现层,用于展示数据和提供用户输入数据的渠道,在适当的情况下调用业务逻辑层中的方法。

JSP


Java Server Page

使用Java开发、运行在服务器上的页面。

jsp文件的后缀名为".jsp"。

由于最初由servlet渲染页面,在Java代码中加入大量html的内容,使用极不方便。所以Sun公司推出了JSP,可以在页面中加入java代码,让页面成为动态页面。

JSP页面的本质是一个java文件(servlet)

在访问某个jsp页面时,会让该页面重新编译为.java文件-->.class文件,所以第一次访问某个JSP页面时会慢一些。

JSP的组成


1.HTML元素

2.脚本(java代码)

<%java代码;%>

3.表达式

用于在页面中嵌入变量的值

<%=变量%>

4.指令

<%@指令名属性="值" %>

page指令 用于设置当前页面的属性

include指令 用于引入其他页面

taglib指令 用于引入其他标签库

5.注释

<%--jsp注释--%>

在浏览器中可以查看html的注释,无法查看jsp的注释

6.声明

<%! 定义方法 %>

在<%%>中无法定义方法,如果非要在jsp页面中定义方法,需要使用声明。不建议在jsp页面中定义方法。

7.动作

jsp中定义了一些标签,可以代替某些java代码

<jsp:动作名></jsp:动作名>

EL


Expression Language 表达式语言

是为了使JSP写起来更加简便,替换JSP中的<%=%>,简化了JSP页面中输出数据的操作。

主要输出保存在某个作用域中的数据。

特点


如果通过"某个作用域对象.setAttribute("cus",customer)"方法保存的对象,

在JSP页面中如果用表达式,使用<%=cus%>,如果用EL,使用${cus}输出。

会依次从pageContext-->reqeust-->session-->application中获取指定对象,

如果一旦从某个作用域中获取到了指定对象,就不再判断后续作用域。

也可以输出指定作用域中的对象。

  • 只能输出保存在作用域中的对象

  • 减少代码(省去了获取对象、转换的过程)

  • 免去非空判断

  • 如果某个要输出的对象不存在,不会输出null,而是输出空字符串""。

使用


在页面中输出保存在作用域中的对象

  • 从作用域中依次查询并输出对象

${对象名}

  • 从指定作用域中输出对象

作用域

对应作用域

代码

pageScope

当前页pageContex

${pageScope.对象}

requestScope

请求request

${requestScope.对象}

sessionScope

会话session

${sessionScope.对象}

applicationScope

项目application

${applicationScope.对象}

  • 输出对象的属性

${对象名.属性名}

${对象名["属性名"]}

  • 输出对象的方法返回值

${对象名.方法名()}

如在servlet中

Person p=new Person("admin","男",20);
request.setAttribute("p",p);

跳转到某个页面中

<html>
    <head></head>
    <body>
        <%--如果不用EL,先获取对象,向下转型--%>
        <% Person p=(Person) request.getAttribute("p");%>
        <%--如果p为null,会报错,如果name没有赋值,会输出null--%>
        <h3>
            <%=p.getName()%>;
        </h3>
​
        <%--如果使用EL,无需获取对象,无需转型,直接通过保存的对象名.属性名即可--%>
        <h3>
            ${p.name}
        </h3>
        <%--使用EL输出对象的属性时,该对象必须要有getXX()方法--%>
        <%--如果没有在任何作用域中获取到对象p,或对象p没有name属性,不会保存,输出空字符串--%>
        <h3>
            ${p["name"]}
        </h3>
    </body>
</html>

在页面中获取请求中的参数

用于获取表单提交的数据或超链接?后传递的数据。

使用${param.参数名}替换request.getParameter("参数")。

如有表单或超链接

<form action="page.jsp">
    <input type="text"name="username">
    <input type="submit">
</form>
​
<a href="page.jsp?username=admin">跳转</a>

在page.jsp中获取

<html>
    <head></head>
    <body>
        <%--传统写法--%>
        <% String username=  request.getParameter("username");%>
        <h3>
            <%=username%>;
        </h3>
​
        <%--如果使用EL--%>
        <h3>
            ${param.username}
        </h3>
    </body>
</html>

用于获取当前项目上下文(根目录+项目名)路径

http://localhost:8080/Web03/就是一个项目上下文路径,

在JSP中使用${pageContext.request.contextPath}获取项目上下文路径

<form action="${pageContext.request.contextPath}/servlet映射">
    
</form>
​
<a href="${pageContext.request.contextPath}/页面路径">超链接</a>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值