JavaWeb阶段总结(华清远见)

1. Servlet

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

  • web服务器通常只能处理静态的资源(html , css , img , js…) , 为了解决一些动态的处理数据 ,就需要对 web服务器的功能进行扩展,servlet就是用于处理动态数据的组件规范。

  • 组件: 符号一定规范 ,完成部分功能的软件模块。这些软件模块需要放在容器中进行运行。 比如:servlet , jsp就属于组件, tomcat就属于容器。 servlet必须放在tomcat容器中进行运行。 必须先启动tomcat, 然后才能访问到servlet , jsp.

  • 容器:符号一定规范 , 能够运行组件的一种软件。 比如:tomcat …

  • servlet规范: 使用servlet的时候,自定义的类是HttpServlet的子类 ,那么就是符合servlet的规范。

2. Servlet的开发步骤

  • 新建符合java web项目的工程

  • servlet 类 继承 HttpServlet

  • 重写service方法

    • service(HttpservletRequest request , HttpServletResponse)
    • request : 请求
    • response :响应
  • java web工程中的web.xml文件

    • web.xml 的文件名不能修改(tomcat找web.xml)
    • 将java的类 和 浏览器访问的地址做一个映射
    • 浏览器没法办法直接访问java类中的方法 , 所以需要java类映射到一个浏览器能访问的url地 址。
  • 打包(idea帮助完成)

    • 把web项目运行需要的文件内容按指定文件结构保存。
    • 部署(在idea中可以完成)
    • 把打包好的web程序放到tomcat容器中,然后运行tomcat容器的时候,才能访问我们的web 程序。
  • 启动容器, 然后可以通过浏览器访问访问web程序。

3. maven web项目的创建

  • 选择maven项目 ,选择项目的模板为maven-archetype-webapp.
    请添加图片描述

  • 设置项目的名字等信息
    请添加图片描述

  • 设置maven的路径
    请添加图片描述

4. 项目创建之后的修改

  • 找到项目结构,添加java, resources目录
    在这里插入图片描述

  • 新建文件夹,设置文件夹类型
    在这里插入图片描述

  • 删除原来低版本的web.xml文件
    在这里插入图片描述

  • 增加4.0版本的web.xml
    在这里插入图片描述

  • 安装配置tomcat 服务器

java web项目运行,需要运行在支持java web项目的服务器上,常见的java web服务器: tomcat、JBoss、Resin、Jetty

  • 单击右侧的add configuration , 打开配置窗口
    在这里插入图片描述

  • 选择tomcat
    在这里插入图片描述

  • 选择tomcat的路径
    在这里插入图片描述

  • 部署项目
    在这里插入图片描述

  • 修改项目的请求路径
    在这里插入图片描述

  • 项目启动成功之后,访问的url:
    在这里插入图片描述

  • 修改控制台乱码:
    在这里插入图片描述

5. servlet & servlet的配置

  • servlet
public class LoginServlet extends HttpServlet {
   
   @Override
   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
       resp.setContentType("text/html;charset=UTF-8");
       req.setCharacterEncoding("UTF-8");
       // 设置编码方式
       String name = req.getParameter("name");
       String password = req.getParameter("password");
       // 获取用户名与密码
       BookUserDao dao = new BookUserDao();
       BookUser user = dao.getUserByNameAndPassword(name,password);
       PrintWriter writer = resp.getWriter();
       // 输出流
       String html;
       if(user == null){
   
           html = "<html><body><h2>用户名或密码错误</h2></body></html>";
       }else{
   
           html = "<html><body><h2>"+ name +",恭喜你登录成功。</h2></body></html>";
       }
       // 拼接html
       writer.println(html);
       // 输出信息
   }
}
  • web.xml
<servlet>
    <servlet-name>atry</servlet-name>
    <servlet-class>action.TryServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>atry</servlet-name>
    <!--
    /*:所有地址都会被匹配到
    /:除了jsp和精确地址,都会被匹配到
    /url:精确地址
    *.xx:按后缀名进行匹配
    -->
    <url-pattern>/try</url-pattern>
</servlet-mapping>
  • 接收前端提交的数据

    • http://localhost:8080/webapp/servlet-url?key=value&k1=v1&k2=v2…
    • request对象getParameter(key) , 获取请求参数
    • getParameter 方法的返回值是String类型,使用的时候需要注意数据类型的转换
    • 如果前端没有提交该参数, getParameter 返回值是null
    • 如果前端提交的中文出现乱码, 设置编码为utf-8:request.setCharacterEncoding(“utf-8”)
  • 响应结果

    • 通过response对象的getWriter() 方法,得到输出流
    • 通过输出流,输出字符串内容,作为响应结果
    • 设置响应结果的类型 和字符编码:resp.setContentType(“text/html;charset=UTF-8”)
      • text/html , 这个是浏览器能解析的html格式
      • application/json , 这个是浏览器能解析的json格式 (后期在ajax中使用)
      • 浏览器对不能解析的格式,就提示你下载(test/html , 就是浏览器不能解析的格式,就 提示下载。)

6. servlet的url映射方式

tomcat 优先查找servlet ,如果没有符合的servlet ,那么就找静态资源,如果也没有静态资源被找到, 就404.

  • /life : 精确地址 ,没有扩展名, 以/开始

  • /life.do: 精确地址, 有扩展名, 以 / 开始 .do , 通配符 + 扩展名, 所有以.do结尾的请求,都会被拦截, 不能以/开始。

  • / , 拦截所有请求, 但不拦截jsp
  • /* , 拦截所有请求

7. jsp的使用

jsp是一种运行在服务器端的页面, 它里面包含html , 嵌入一些java语言, 在服务器(tomcat)上经过 解析转换, 输出为html页面。

jsp不需要配置, 直接用它的路径和文件名进行访问。

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

  • servlet + html : 数据的处理和数据的显示

  • servlet + jsp: 数据处理(servlet) , 数据展示(jsp-- 嵌套java使用)

    • servlet 做数据显示的时候,不方便(编写, 维护都不方便)
    • jsp:让数据的处理和数据的展示进行分离

7.1 基本结构

jsp文件的扩展名:.jsp

page指令:第一行是指定页面的类型和页面的编码方式

通过jsp文件的路径,进行访问: http://localhost:8080/webemp/index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>

7.2 jsp页面写Java相关内容

添加需要包,避免jsp内置对象使用的时候,不提示对应函数
在这里插入图片描述

7.3 jsp的运行

jsp的本质是servlet。

  • 当第一个访问一个jsp页面的时候, 会将jsp文件, 对应生成一个servlet类。

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

  • 其他和java相关的内容,就按java的方式转换。

7.4 jsp实例

<%@ page import="java.util.List" %>
<%@ page import="entity.Emp" %>
 <%--
  Created by IntelliJ IDEA.
  User: yzxh
  Date: 2022/9/6
  Time: 17:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    Object emps = request.getAttribute("emps");
    List<Emp> list = null;
    if (emps != null) {
        if (emps instanceof List) {
            list = (List<Emp>) emps;
        }
    }
%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>员工列表</title>
    <style>
        html,body{
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
            min-width: 680px;
            min-height: <%= 26.3*list.size() + 100 %>px;
        }
        body{
            display: flex;
            justify-content: center;
            align-items: center;
        }
        h3{
            text-align: center;
        }
        a{
            text-decoration: none;
        }
        div>a{
            width: 100%;
            text-align: center;
            display: inline-block;
        }
        table{
            text-align: center;
        }
        tr td:nth-last-child(1){
            width: 130px;
            display: flex;
            justify-content: space-evenly;
            align-items: center;
        }
    </style>
</head>
<body>
<div>
    <a href="<%=request.getContextPath()%>/jsp/addEmp.jsp">增加员工</a>
    <hr>
    <table border="1" cellspacing="0">
        <tr>
            <th>员工编号</th><th>员工姓名</th><th>工作岗位</th><th>部门经理编号</th><th>入职日期</th><th>员工工资</th><th>部门编号</th><th>操作</th>
        </tr>
        <%
            for (Emp e : list) {
        %>
        <tr>
            <td><%=e.getEno()%>
            </td>
            <td><%=e.getEname()%>
            </td>
            <td><%=e.getEjob()%>
            </td>
            <td><%=e.getEmanager()%>
            </td>
            <td><%=e.getEhiredate()%>
            </td>
           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值