JavaWeb|在IDEA中创建基于Maven的Web项目| Servlet依赖|这一篇就够了(超详细)

🙈作者简介:练习时长两年半的Java up主
🙉个人主页:老茶icon
🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎
📚系列专栏:Java全栈,计算机系列(火速更新中)
💭 格言:种一棵树最好的时间是十年前,其次是现在
🏡动动小手,点个关注不迷路,感谢宝子们一键三连

课程名:JavaWeb

内容/作用:知识点/设计/实验/作业/练习

学习:在IDEA中创建基于Maven的Web项目

在IDEA中创建基于Maven的Web项目

1.新建webapp模板

在这里插入图片描述

2.在src目录下新建文件夹,之后在此创建java文件

在这里插入图片描述

选择main\java

在这里插入图片描述

3.修改项目中web.xml版本为4.0

打开项目结构
在这里插入图片描述

移除默认2.3版本的web.xml文件,移除后一定要apply应用

重新添加web.xml文件,选择4.0版本

在这里插入图片描述

4.配置tomcat服务器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.将项目部署在tomcat中

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.启动项目

启动tomcat

在这里插入图片描述

默认启动成功后会自动打开浏览器访问项目,也可以通过"localhost:8080/项目名"访问。

这里看到的页面,是web项目中自带的index.jsp文件
在这里插入图片描述

web资源目录结构

webapp下如果有index文件,访问项目后会自动访问index文件,如果没有名为index的文件,就会出现404,表示index页面不存在

项目上下文路径

域名+端口+项目名 称为项目上下文路径

如localhost:8080/web01就是项目上下文路径,可以理解为项目根目录

webapp目录直接通过项目上下文路径访问,无需显式写出

在这里插入图片描述

更新了项目中的内容后,根据需要选择重启还是重新部署

在这里插入图片描述

修改项目编译时的jdk版本

修改web模块的jdk版本

在这里插入图片描述

修改当前项目的jdk版本

在这里插入图片描述

解决tomcat控制台中文乱码

在这里插入图片描述

在这里插入图片描述

重启IDEA

Servlet

Servlet表示Server+Applet,意味运行在服务器上的程序。是一个被动运行程序,每次请求都要执行。

BS结构客户端访问服务器端的流程

在这里插入图片描述

编写Servlet的步骤

1.在项目中导入Servlet所需依赖

在这里插入图片描述

<!-- servlet所需依赖 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.0</version>
    <scope>provided</scope>
</dependency>

粘贴在pom.xml文件中的dependencies标签下

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

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

/*
 * 编写Servlet的步骤
 * 1.导入依赖
 * 2.创建一个类,继承HttpServlet,重写doGet和doPost方法
 * 3.在web.xml中设置访问该类的url映射
 * */
public class FirstServlet extends HttpServlet {
    //普通的控制台项目,需要主动运行main方法执行程序
    //web项目中的java程序,需要被动运行,在用户通过浏览器访问某个程序的url映射时执行

    /*
     * 当浏览器发送的是get类型的请求,执行这个方法
     * */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        System.out.println("get请求");
    }

    /*
     * 当浏览器发送的是post类型的请求,执行这个方法
     * */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
        System.out.println("post请求");
    }
}

3.在web.xml文件下,配置Servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--xml是一个配置文件,属于一种标记语言,通过标签定义内容-->
    <!--声明Servlet-->
    <servlet>
        <!--servlet命名-->
        <servlet-name>firstServlet</servlet-name>
        <!--servlet类的全限定名(路径+文件名)-->
        <servlet-class>FirstServlet</servlet-class>
    </servlet>
    <!--定义Servlet的请求映射-->
    <servlet-mapping>
        <!--要映射的servlet名,与上方定义的servlet-name一致-->
        <servlet-name>firstServlet</servlet-name>
        <!--请求映射url,必须以/开头-->
        <!--之后通过项目上下文路径+该路径,就能访问FirstServlet类-->
        <url-pattern>/first</url-pattern>
    </servlet-mapping>
</web-app>

复制资源的相对路径
在这里插入图片描述

在这里插入图片描述

启动tomcat,访问"localhost:8080/项目路径/first"即可访问自定义servlet类中的doGet方法

解决tomcat控制台中输出中文时的乱码

在这里插入图片描述

三层架构

在这里插入图片描述

在软件开发中,并不是将所有的功能集成到一个类或文件中实现,而是要将其分层处理。从而达到"高内聚,低耦合"的目的。

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

高内聚指各个模块的功能不开再分。

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

  • 数据访问层:用于连接操作数据库的类。对数据进行增删改查。
  • 业务逻辑层:用于处理业务逻辑,在适当的情况下访问数据访问层中的内容。
  • 视图表现层:用于展示和提供用户输入的渠道,在适当的情况下访问业务逻辑层中的内容

访问服务器某个URL的方式

  • 在浏览器的地址栏中输入对应URL,属于get请求
  • 使用a标签,在href中定义对应的URL,属于get请求
  • 使用form表单,在action中定义对应的URL,根据method属性的值控制get或post请求

页面向服务器端提交数据的方式

  • 使用form表单的name属性显式提交

    <form action="http://localhost:8080/web01/getOne" >
        <input type="text" name="id">
        <input type="submit">
    </form>
    

    提交的数据会暴露在浏览器的地址栏中

  • 使用form表单的name属性隐式提交

    <form action="http://localhost:8080/web01/getOne" method="post" >
        <input type="text" name="id">
        <input type="submit">
    </form>
    

    提交的数据不会暴露在浏览器的地址栏中

  • 通过"?参数1=值&参数2=值"方式显示提交

    • 在浏览器的地址栏中输入

      http://localhost:8080/web01/getOne?id=23
      
    • 使用a标签

      <a href="http://localhost:8080/web01/login?username=admin&password=123123">登录</a>
      

    提交的数据会暴露在浏览器的地址栏中

服务器端获取前端提交的数据

前端页面传递数据

<a href="URL?id=123">访问</a>

<form action="URL">
    <input name="id">
    <input type="submit">
</form>

在Servlet的doGet或doPost方法中,

通过**request.getParameter(“name值或?后的参数”)**获取数据,返回值为String

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	//获取页面提交的名为id的参数,返回值为String
    String id = req.getParameter("id");
    
    if (service.delete(Integer.parseInt(id))) {
        //跳转至另一个URL
        resp.sendRedirect("http://localhost:8080/Web01/queryEmps");
    } else {
        resp.getWriter().print("删除失败");
    }
}

解决请求和响应时的中文乱码

public class MServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决请求时的乱码
        req.setCharacterEncoding("utf-8");
		//解决响应时的乱码
        resp.setContextType("text/html;charset=utf-8");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

总结

   好好学习,天天向上。

往期专栏
Java全栈开发
数据结构与算法
计算机组成原理
操作系统
数据库系统
物联网控制原理与技术
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【资源介绍】 基于JavaWeb的在线问卷调查系统源码+项目部署说明.zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载交流,互相学习,共同进步! 为了巩固自己的JavaWeb基础,采用了Servlet+JSON+Ajax的方式来完成这个项目 开发环境 集成开发环境:IDEA Web服务器:Tomcat 项目搭建:Maven 相关软件包:servlet、mysql、lombok、jackson 功能点 用户管理 **注册:** 管理员用户进行注册,使用form表单收集用户的username和password。插入到数据库表,为了提高安全性使用BCrypt对用户的密码进行加密。 **登录:** 从session判断用户是否登录,登录后可以进行下一步操作,如果没有登录就回到登录页面,根据用户输入的用户名和密码来验证是否注册过。 **退出:** 从session删除用户的信息。 ###题库管理 **录入题目:** 使用form表单收集管理员需要录入的题目,然后将题目插入到数据库表。 **题目列表:** 查询当前管理员账户所录制的所有题目以及其相关信息,由于题目信息量较大,所以需要加入分页功能。并且需要能够显示该题目被多少问卷所绑定。 问卷管理 **新建问卷:** 输入本次问卷的题目和简介,然后将录入的信息进行提交然后存储到数据库。 **问卷列表:** 查询当前管理员账户所创建的问卷信息,然后分页显示 **关联题目:** 将指定的问卷关联题目,即将题目绑定到问卷。 活动管理 **新建活动:** 创建新的活动,指定具体的调查问卷,然后插入到数据库表。 **活动列表:** 显示当前管理员用户所创建的活动信息。 **结果显示:** 收集用户提交的调查问卷,对调查问卷的结果进行分析,使用统计图表的方式来直观的展示本次问卷的相关信息 调查问卷页 这个是发布给普通用户的调查问卷。包含活动信息,问卷信息,题目信息等。 ##数据库设计 本项目共涉及到6张表:用户表、题目表、问卷表、题目和问卷关系表、活动表、结果表 * users : uid、username、password * questions : qid、uid、question、options * surveys : sid、uid、title、brief * relations : rid、sid、qid * activies : aid、uid、sid、started_at、ended_at * results : reid、aid、nickname、phone、answer 表的关系如下: ![](https://Leon-S-Kennedy/MySurvey/blob/main/img.png) 具体实现 用户管理 **注册:** /user/register.html : * 静态资源,采用form 表单,提交 post 请求,提交用户名 + 密码 /user/register.do : * 动态资源,读取用户名 + 密码,并对密码进行加密 * 将数据存储到数据库,将用户信息放入session 核心SQL:`insert into users (username, password) values (?, ?);` **登录:** /user/login.html : * 静态资源,采用form 表单,提交 post 请求,提交用户名 + 密码 /user/login.do : * 动态资源,读取用户名 + 密码 * 从数据库查找信息,并合演密码是否正确,将用户信息放入session 核心SQL:`select uid,username,password from users where username = ?;` **退出:** /user/quit.do: * 动态资源,将用户的信息从session删除即可 题库管理 **题目录入:** /question/create.html: * 静态资源,采用form表单,提交post请求,将题目信息进行提交 /question/create.do: * 动态资源,将提交的题目进行存储
【项目介绍】 基于Javaweb的在线人才招聘系统源码+项目说明(毕业设计).zip 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。\ 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;\ 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可\ 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; \ 5.数据库:MySql 5.7版本;\ 6.是否Maven项目:否; 技术栈 1. 后端:Spring+SpringMVC+Mybatis\ 2. 前端:JSP+CSS+JavaScript+jQuery 使用说明 根据用户的需求分析设计,大学生求职招聘系统主要包括四个权限设置,包括游客、求职者、企业、系统管理员。 1. 使用Navicat或者其它工具,在mysql创建对应名称的数据库,并导入项目的sql文件;\ 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;\ 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;\ 3. 将项目springmvc-servlet.xml配置文件的数据库配置改为自己的配置;\ 4. 运行项目,在浏览器输入http://localhost:8080/ 登录 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载食用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程,如有问题或建议,请及时沟通。 5.期待你能在项目找到乐趣和灵感,也欢迎你的分享和反馈!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员老茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值