JavaWeb实训笔记

一、配置IDEA

1.首先选择New Project

2.勾选web项目

3.双击src进入项目结构编辑

4.在WEB-INF下创建classes,lib两个目录

5.选择上方的paths选项卡后将输出路径选择为刚刚建立的classes文件夹

6.选择最后的Dependencies后点击右侧的加号选择第一个选项

7.选择路径为之前建立的lib

8.在之后弹出的对话框中选择Jar Directory

9.点击右上角的编译配置

10.点击左上角的加号后选择Tomcat Server 里的local

10.1.如果没有tomcat,进入设置搜索tomcat然后将插件启用

11.配置Server

12.选择上方Deployment选项卡后点击右侧加号选择这个项目

13.配置完成,运行

二、搭建一个简易servlet程序

1.像普通java一样创建一个package,然后在下面创建一个新的servlet

填好名称和包名

2.先将之前写好的login的html粘贴到main.jsp中去

<%--
  Created by IntelliJ IDEA.
  User: 贾辉
  Date: 2019/7/1
  Time: 15:38
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
    <style>
        .zhong {
            text-align: center
        }
    </style>
</head>
<body>
<div class="zhong">
    <form method="post" action="ServletTest">
        用户名:<br/>
        <input type="text" name="username">
        <br/> <br/> 密码:
        <br/>
        <input type="password" name="password">
        <br/> <br/> 确认密码:
        <br/>
        <input type="password" name="repassword">
        <br/> <br/> 年龄:
        <br/>
        <input type="number" name="age" min='1' max='150'/>
        <br/> <br/> 性别:
        <br/>
        <input type="radio" name="sex" value="male" checked>男
        <br/>
        <input type="radio" name="sex" value="femal"/>女
        <br/><br/>
        <input type="submit" value="submit"/>
    </form>
    <div/>
</body>
</html>

使用post的形式提交到ServletTest中去

3.使用request下的getParameter方法获取数据

String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username);
        System.out.println(password);

(代码添加到doPost方法中)

同时修改@WebServlet,加入urlPatterns

@WebServlet(name = "ServletTest", urlPatterns = "/ServletTest")

4.运行测试

提交后

成功

5.请求转发与重定向

区别

一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:

转发过程:客户浏览器发送http请求—-》web服务器接受此请求–》调用内部的一个方法在容器内部完成请求处理和转发动作—-》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
重定向过程:客户浏览器发送http请求—-》web服务器接受后发送302状态码响应及对应新的location给客户浏览器–》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址—-》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

转自:https://blog.csdn.net/meiyalei/article/details/2129120

应用

首先新建loginok和loginerr两个jsp文件
修改doPost方法

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        if(username.equals("admin")&&password.equals("admin")){
            //请求转发
            request.getRequestDispatcher("Loginok.jsp").forward(request,response);
        }
        else{
            //重定向
            response.sendRedirect("Loginerr.jsp");
        }
    }


验证后均可实现跳转

三、Servlet会话跟踪

session可以在一个会话中记录所需要的若干信息
创建session对象
HttpSession session=request.getSession();//创建session对象
存入数据
session.setAttribute("mystr",str);
session和map类似,用第一个字符串映射到第二个内容上。
取出数据
String str=(String)session.getAttribute("mystr");

四、JSP

使用<% %>包裹java代码,其他部分和HTML基本相同

应用

在登陆的doPost方法中使用

HttpSession session=request.getSession();
session.setAttribute("na",username);

记录用户名,再到登陆成功的jsp中使用
java
<%
String username=(String)session.getAttribute("na");
%>
welcome<%=username %>!

输出登陆成功的欢迎界面

五、EL语法

可以用EL表达式高效的代替java代码

示例项目源代码

https://jhcloud.top/pan/uploads/%E8%B4%BE%E8%BE%89/javaweb_1.zip

发表评论

电子邮件地址不会被公开。 必填项已用*标注