《Javaweb——网页开发请求》

1_html发送请求的三种方式

<body>

        <p>知识点1:HTML发送请求的方式:</p>
        <p>1.超链接</p>
        <p>2.表单</p>
        <p>3.利用js的语法 本质就是超链接</p>
        <p>这些请求既可以指向前台也可以指向后台Java</p>
        
        <hr>

        <a href="http://www.baidu.com">外部的百度链接</a>
        <a href="aaa.html">内部的本地链接</a>

        <form action="aaa.html"  method="post" >
            <input type="submit" value="提交">
        </form>

        <button id="btn">点击我利用JS发送请求</button>

        <hr>
        <a href="index2.html">知识点2</a>
        <a href="index3.html">知识点3</a>
        <a href="index4.html">知识点4解决乱码</a>
        <script>
            document.getElementById("btn").onclick = function (){
                location.href = "aaa.html";
            }
        </script>

</body>

2_Java如何编写代码 来处理前台的请求

<body>
    <p>Java如何编写代码 来处理前台的请求</p>
    <p>通过编写servlet(专门和前台进行交互)即可</p>
    <p>servlet类名的规范  XxxServlet  Xxx表示该servlet是处理什么前台请求的 例如LoginServlet</p>

    <a href="/test123">测试访问servlet</a>



</body>

3_如何利用前台发送数据给后台

<body>
    <h4>前台如何发送数据给后台</h4>
        <p>1.超链接发送数据,只需要在后面加上?key=value&key=value...的形式即可</p>
        <a href="AServlet?id=123&name=张三&age=18">发送若干数据</a>
        <hr>
        <p>2.利用js的语法 本质就是超链接</p>
        <button id="btn">发送带有数据的请求</button>
        <p>3.表单, 通过加上name属性即可 </p>

        <form action="/CServlet"  method="post" >
            账号:<input type="text" name="username" > <br>
            密码:<input type="password" name="password" > <br>
            性别:
            <input type="radio" name="sex" checked  value="男" >男
            <input type="radio" name="sex"  value="女" >女
            <br>
            地址:
            <select name="address" >
                <option>湖南</option>
                <option>广东</option>
                <option>云南</option>
            </select>
            <br>
            爱好:
            <input type="checkbox" name="likes" value="吃">吃
            <input type="checkbox" name="likes" value="喝">喝
            <input type="checkbox" name="likes" value="玩">玩
            <input type="checkbox" name="likes" value="乐">乐
            <br>
            简介:
            <textarea name="jieshao">自我介绍:</textarea> <br>
            生日:
            <input name="birthday" type="date">  <br>


            <br>
            <input type="submit" value="提交">
        </form>



        <script>
            document.getElementById("btn").onclick = function (){
                location.href = "/BServlet?id=123&sex=男";
            }
        </script>
</body>

4_如何处理乱码现象

<body>
    <!--
        前台传递数据  如果出现中文,就会乱码。
        如何解决,只需要在接受数据的前面加上 如下代码即可:
        req.setCharacterEncoding("utf-8");
     -->
</body>

5_如何让普通java类处理前台请求的servlet类

package com.yyzy.servlet;

/*
    如何让一个普通的Java类变成可以处理前台请求的servlet类

    1.导入jar包 servlet-api.jar  导入了jar包才可以使用Servlet的相关功能

    2.在类上加上@WebServlet("/xxx")   注意/表示绝对路径 Xxx表示请求的路径名
    表示该类是可以和前台进行交互了

    3.继承HttpServlet类  让子类拥有父类的相关方法。

    4.重写父类的service方法。(处理请求的相关代码)


*/

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/test123")
public class TestServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进来了");
    }
}

6_前台发送请求的三种方式

<a href="index1.html">前台发送请求的三种方式</a><br><br><br>
<a href="index2.html">后台如何接受前台发出的请求---Servlet创建方式</a><br><br><br>
<a href="index3.html">前台如何发送带有数据的请求</a><br><br><br>
<a href="index4.html">后台如何接受前台的数据</a><br><br><br>
<a href="index5.html">实现用户注册基础版</a><br><br><br>


 <p>web项目是存在缓存问题的:好处就是节省流量节省加载时间。</p>
 <p>web项目是存在缓存问题的:坏处就是无法得到理想的正确的结果。</p>
 <p>Web缓存存在的两个地方 : 1.浏览器内部--更多工具--清除浏览数据</p>
 <p>Web缓存存在的两个地方 : 2.idea项目内部的out目录(加载web项目的缓存目录)</p>

7_通过超链接

<p>前台发送请求的方式1:通过超链接</p>
<a href="http://www.baidu.com">指向互联网资源</a>
<a href="index.html">指向项目内部的页面资源</a>
<a href="/xxx">指向项目内部的Java资源</a>

<hr>
<p>前台发送请求的方式2:通过JS</p>
<button id="btn">点击按钮发送一个请求</button>

<hr>
<p>前台发送请求的方式3:通过表单</p>
<form action="index.html" method="post">
    账号:<input type="text" name="username"><br>
    <input type="submit" value="提交">
</form>



<script>
    document.getElementById("btn").onclick = function (){
        location.href = "index.html";//本质依然是超链接
    }
</script>

8_后台如何获取前台发送的请求

<p>后台如何获取前台发来的请求</p>
    <p>答:通过tomcat提供的Servlet类来实现</p>
    <p>什么是Servlet:处理前台请求的一个类</p>
    <p>如何去创建Servlet:</p>
    <p>1.导入jar包---servet-api.jar  在tomcat的lib目录里面</p>
    <p>2.在servlet的包下创建一个Servlet的类</p>
    <p>2.1 Servlet的命名规范: XxxServlet  其中Xxx表示什么功能的Servlet </p>
    <p>3.继承HttpServlet</p>
    <p>4.重写父类的service方法,然后把默认的super删除</p>
    <p>5.在类上添加@WebServlet("/Xxx") 注解。表示前台通过什么请求路径访问该类,一般和类名同名</p>

    <p>测试如下Servlet</p>
    <a href="/TestServlet">通过超链接访问Servlet</a>
    <button id="btn">通过JS访问Servlet</button>

<script>
    document.getElementById("btn").onclick = function (){
        location.href = "/TestServlet";
    }
</script>

9_后台接受数据的方式:详情见RegServlet

<p>后台接受数据的方式:详情见RegServlet</p>

10_例题

<form id="f" action="/RegServlet" method="post">
    账号:<input  type="text" name="username"><br>
    密码:<input  type="password" name="password"><br>
    性别:
    <input type="radio" name="sex" value="男" checked >男
    <input type="radio" name="sex" value="女"  >女<br>
    爱好:
    <input type="checkbox" name="likes" value="吃">吃
    <input type="checkbox" name="likes" value="喝">喝
    <input type="checkbox" name="likes" value="玩">玩
    <input type="checkbox" name="likes" value="乐">乐
    <br>
    地址:
    <select name="address">
        <option>湖南</option>
        <option value="123广东~">广东</option>
        <option>云南</option>
    </select> <br>
    自我介绍:
    <textarea name="jieshao">自我介绍:</textarea>
    <br>
    生日:<input type="date" name="birthday"><br>
    <input type="submit" value="提交">
</form>

11_CServlet类

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/CServlet")
public class CServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进来了CServlet");
        req.setCharacterEncoding("utf-8");


        String username = req.getParameter("username");
        System.out.println(username);
        String password = req.getParameter("password");
        System.out.println(password);
        String sex = req.getParameter("sex");
        System.out.println(sex);
        String address = req.getParameter("address");
        System.out.println(address);
        //类似于多选框的 就不能用上面的方式  因为上面的只能获取单个
        String[] likes = req.getParameterValues("likes");
        for(int i = 0 ;i<likes.length;i++){
            System.out.println(likes[i]);
        }
        String jieshao = req.getParameter("jieshao");
        System.out.println(jieshao);
        String birthday = req.getParameter("birthday");
        System.out.println(birthday);




    }
}

12_BServlet类

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/BServlet")
public class BServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进来了BServlet");
        String id = req.getParameter("id");
        String sex = req.getParameter("sex");
        System.out.println(id + "~~" + sex);
    }
}
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/BServlet")
public class BServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进来了BServlet");
        String id = req.getParameter("id");
        String sex = req.getParameter("sex");
        System.out.println(id + "~~" + sex);
    }
}

13_AServlet类

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/AServlet")
public class AServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进来了AServlet");

        //如何接受前台传递过来的参数  注意事项:接受的返回值全是String  需要自行转换req.getParameter("id");只能获取单个参数
        String id = req.getParameter("id");
        String age = req.getParameter("age");
        String name = req.getParameter("name");
        System.out.println(id + "~~" + name + "~~" +age);

    }
}

14_RegServlet类

package com.yyzy.servlet;

import com.yyzy.dao.UserInfoDao;
import com.yyzy.entity.Userinfo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/RegServlet")
public class RegServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //接受数据的流程:
        //1.设置编码
        req.setCharacterEncoding("utf-8");

        //收集单独独立的数据,例如账号密码性别年龄生日自我介绍等等
        //xxx表示前台的参数名是什么  接受返回值全是String  需要自行转换
//        String xxx = req.getParameter("xxx");

        //收集多个数据:例如爱好  需要遍历 来一一取值
//        String[] xxx = req.getParameterValues("xxx");

        String username = req.getParameter("username");
        if(username.length()==0){
            System.out.println("账号不能为空");
            return ;//跳出去
        }


        System.out.println("账号为" + username);
        String password = req.getParameter("password");
        System.out.println("密码为" + password);

        String sex = req.getParameter("sex");
        System.out.println("sex为" + sex);
        String[] likes = req.getParameterValues("likes");
        System.out.println(likes);
        if(likes==null){
            System.out.println("爱好不能为空");
            return ;//跳出去
        }

        String l = "";
        for (int i = 0;i<likes.length;i++){
            if(i==likes.length-1){
                l = l + likes[i] ;
            }else{
                l = l + likes[i] + ",";
            }
        }

        String birthday = req.getParameter("birthday");
        System.out.println("birthday为" + birthday);

        String address = req.getParameter("address");
        System.out.println("address为" + address);
        String jieshao = req.getParameter("jieshao");
        System.out.println("jieshao为" + jieshao);

        UserInfoDao ud = new UserInfoDao();
        Userinfo userinfo = new Userinfo(null,username,password,sex , l ,address,jieshao,birthday);

        boolean b = ud.regUserinfo(userinfo);
        System.out.println(b);
    }
}

15_TestServlet类

package com.yyzy.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("访问成功");
    }
}

16_JDBC链接

package com.yyzy.util;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

//工具类。生成Connetion链接供dao包下的类使用
public class JDBCUtil {

    /*
        1.静态化加载驱动
        2.声明一个可以返回COnnetion链接静态方法供dao去使用
    */

    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("加载mysql驱动失败" + e);
        }
    }

    public static Connection getConn(){
        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "root");
            return connection;
        } catch (SQLException e) {
            System.out.println("获取链接失败" + e);
            return  null;
        }

    }



}

17_Test测试类

package com.yyzy.test;

import com.yyzy.dao.UserInfoDao;
import com.yyzy.entity.Userinfo;
import com.yyzy.util.JDBCUtil;

import java.sql.Connection;

public class Test {


    public static void main(String[] args) {
//        Connection conn = JDBCUtil.getConn();
//        System.out.println(conn);
        UserInfoDao ud = new UserInfoDao();
        Userinfo userinfo = new Userinfo(null,"张三","1234","男" , "吃,玩","广东","我是牛吗","19999-1-1");

        boolean b = ud.regUserinfo(userinfo);
        System.out.println(b);

    }
}

18_Userinfo实体类

package com.yyzy.entity;

public class Userinfo {
    private Integer id;
    private String username;
    private String password;
    private String sex;
    private String likes;
    private String address;
    private String jieshao;
    private String birthday;

    public Userinfo() {
    }

    public Userinfo(Integer id, String username, String password, String sex, String likes, String address, String jieshao, String birthday) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.sex = sex;
        this.likes = likes;
        this.address = address;
        this.jieshao = jieshao;
        this.birthday = birthday;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getLikes() {
        return likes;
    }

    public void setLikes(String likes) {
        this.likes = likes;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getJieshao() {
        return jieshao;
    }

    public void setJieshao(String jieshao) {
        this.jieshao = jieshao;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "Userinfo{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", sex='" + sex + '\'' +
                ", likes='" + likes + '\'' +
                ", address='" + address + '\'' +
                ", jieshao='" + jieshao + '\'' +
                ", birthday='" + birthday + '\'' +
                '}';
    }
}

19_UseerinfoDao工具类

package com.yyzy.dao;

import com.yyzy.entity.Userinfo;
import com.yyzy.util.JDBCUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class UserInfoDao {


    //注册用户
    public   boolean regUserinfo(Userinfo userinfo){
        String sql = "insert into userinfo values(null,?,?,?,?,?,?,?)";
        Connection conn = JDBCUtil.getConn();
        try {
            PreparedStatement pre = conn.prepareStatement(sql);
            pre.setString(1,userinfo.getUsername());
            pre.setString(2,userinfo.getPassword());
            pre.setString(3,userinfo.getSex());
            pre.setString(4,userinfo.getLikes());
            pre.setString(5,userinfo.getAddress());
            pre.setString(6,userinfo.getJieshao());
            pre.setString(7,userinfo.getBirthday());
            int i = pre.executeUpdate();
            if (i == 1) {
                return true;
            }else{
                return false;
            }
        } catch (SQLException e) {
            System.out.println("解析sql语句失败" + e);
            return false;
        }
    }


}

20_数据检验的三层防线

第一层:前台校验,一般通过JS可以实现。  可以解决大部分的问题。
缺点1:可以通过浏览器关闭使用JS
缺点2:可以通过各种工具来绕过JS,直接访问Java后台代码  例如postman等


第二层校验:后台Java校验  一般就是长度校验,非空校验等等


第三层校验:数据库校验   一般通过约束来实现。
主键约束
外键约束
自增约束
唯一约束
非空约束
检查约束 : 近些年才开放其功能  之前仅仅是支持语法,不支持功能。  现在已经完全开放  使用高版本的mysql和navicat即可使用。
默认约束

21_乱码的补充

需要修改的地方:
1. 修改tomcat的conf文件夹的logging.properties文件 将下面这行改成GBK
  #java.util.logging.ConsoleHandler.encoding = GBK  默认是UTF-8

2.File-setting-console编码改成GBK

3.File-setting-FileEncoding 三个地方改成UTF-8

4.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
综合小区管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、车位管理、车位分配管理、出入管理、字典管理、房屋管理、物业费缴纳管理、公告管理、物业人员投诉管理、我的私信管理、物业人员管理、用户管理、管理员管理。用户的功能包括管理部门以及部门岗位信息,管理招聘信息,培训信息,薪资信息等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 综合小区管理系统管理系统可以提高综合小区管理系统信息管理问题的解决效率,优化综合小区管理系统信息处理流程,保证综合小区管理系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理综合小区管理系统信息,包括出入管理,报修管理,报修管理,物业费缴纳等,可以管理操作员。 出入管理界面,管理员在出入管理界面中可以对界面中显示,可以对招聘信息的招聘状态进行查看,可以添加新的招聘信息等。报修管理界面,管理员在报修管理界面中查看奖罚种类信息,奖罚描述信息,新增奖惩信息等。车位管理界面,管理员在车位管理界面中新增。公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值