从一个初学者角度,看看Javaweb

88 阅读5分钟

我正在参加「掘金·启航计划」

☀写在开头:

芜湖,很久没有写文章了,很感谢掘金的邀请,呜呜,第一次得到邀请。那么下面就是本片正文部分了。

新学期开始了,这次我们学校的课程多了一个Javaweb,和之前自己放假在网上看视频自学不一样,在老师的带领下,我很快融入了这则新的技术。

❓什么是Javaweb?

Javaweb从字面理解就是Java+web,Java我们知道是一门面向对象语言,web我们学过前端三件套(html,css,js)

那么Javaweb是不是把前后端联系起来了?有一点道理,但是并不深刻。

javaweb实际是Java语言开发出来可以在万维网上访问浏览的程序

要了解Javaweb,我们首先要注意两个关键词客户端和服务端

你可能蒙了,客户端是什么?服务端是什么?

在我们进行Java学习生涯中,客户端,服务端 第一次出现在我们学习网络编程的时候。

在这里,客户端我们看成浏览器,服务端看成服务器。 即我们在浏览器输入请求,我们服务端可以响应请求

这里我们就需要提到架构方式。我们都知道,有一些软件有app,有一些有网页。比如我们掘金软件。那么之前我们会员上线的时候,大家是不是在手机里面更新了掘金app,但是电脑这边,网页版没有更新,但是同样有了掘金会员的信息。那么app就代表我们cs架构(Client/Service 客户端/服务端),网页就是我们的bs架构(Browser/Server 浏览器/服务器)

那么在Javaweb里面,我们使用的就是bs架构了。

@@@那是不是意味着我们可以修改前端页面,但是不用大范围修改前端代码?
是的呢

🌼javaweb开发前提

Javaweb需要我们使用到的软件是idea和tomcat。 我们需要学习的前置技术是,Java和前端内容。

安装和配置参考:如何配置tomcat以及用tomcat写第一个javaweb项目。 - 掘金 (juejin.cn) 不过我当时在eclipse里面的,idea的大家可以试试,其实原理差不多。

javaweb最重要的是servlect和我们的jsp。

jsp语法介绍

  • <%…%> 主要用来定义局部变量、编写 Java 语句;<% !…%> 主要用来定义全局变量和方法;<%=… %> 用来输出 “=” 后面表达式的值。
  • 指令元素形如 <%@…%>,page 指令可以用来设置当前 JSP 文件的 language、import、pageEncoding 和 contentType 等属性。
  • JSP 注释 <!-- --> HTML 注释。<%-- --%> JSP 注释。<% //单行注释 %> 、<% /*多行注释 */ %> Java 注释。
  • JSP 页面中的九大内置对象分别是 out、request、response、session、application 五个常用的内置对象及 Cookie 的使用方法,然后再讲解 pageContext 、request、session、application

在 index.jsp 中写入以下内容,以下语句的作用是在 JSP 页面中输出一句 "Hello World"。

<html>
    <head>
        <title>First Web Project</title>
    </head>
    <body>
        <%
            out.print("Hello World");
        %>
    </body>
</html>

从这里我们看出,jsp和html非常相似,但是<%xx%>里面内容和Java相似,但是不完全是Java

那么实例:如何使用jsp输出99乘法表??

这里主要使用的是out输出语句


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>九九乘法表</title>
</head>
<body>
    <%
        for(int i = 1;i < 10 ; i++){
            for(int j = 1 ; j <= i ; j++){
                out.print(i+"*"+j+"="+i*j+"&nbsp;");
            }
            out.print("<br>");
        }
    %>
</body>
</html>

看到" "大家是不是会疑惑,不是说里面是Java代码吗?为什么会混入前端的空格?

servlect

实现servlect方法就是继承相关类(HttpServlet) 实现相关类接口后重写方法可以是doxx也可以是service方法

image.png 这是我书写的一个servlce方法,那么现在可以去tomcat运行了吗?

不能哦!!接下来我们需要去webxml里面配置相关映射和我们访问路径 需要使用《servlet标签》

<servlet>
    <servlet-name>实现servlet的类名</servlet-name>
    <servlet-class>实现的地址</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>实现servlet的类名</servlet-name>
    <url-pattern>/浏览器输入的访问路径</url-pattern>
</servlet-mapping>

其实还可以使用配置方法:

image.png 这样就不需要自己单独配置了

具体登录功能的实现步骤

  1. 在登录页面中录入用户名和密码,点击登录按钮提交登录请求
  2. 在LoginServlet中通过request对象获取到页面表单提交的用户名和密码
  3. 调用Dao对象,将用户提交的用户名和密码与数据库的用户表的数据进行匹配
  4. 得出结果,完成响应.

/*
 * 处理登录请求的Servlet
 * 
 * Servlet是sun公司制定的标准。Tomcat(web应用服务器、Servlet容器)实现了这些标准。
 * 
 * HttpServlet
 */
public class LoginServlet extends HttpServlet{
	/**
	 * 常用的方法:doGet doPost service
	 * 
	 * 第一种方法  重写
	 *  doGet:处理客户端的get方式的请求
	 *  doPost:处理客户端的post方式的请求
	 *  
	 *  第二种方法  重写
	 *  service:根据具体的请求方法去调用对应的doGet、doPost方法
	 *  
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//登录功能的实现。
		System.out.println("登录请求来了~~~~~~~~~~~");
		//获取到用户输入的用户名的密码,进行登录业务的处理
		/*
		 * HttpServletRequest: 请求对象。Servlet容器会在请求到达后,创建出一个request对象,将
		 * 							Http请求相关的信息全部都封装到该对象中。
		 */
		//获取用户输入的用户名和密码
		String username =  req.getParameter("username");
		String password =  req.getParameter("password");
		//调用Dao对象,将用户提交的用户名和密码与数据库的用户表的数据进行匹配
		UserDao dao = new UserDaoJdbcImpl();
		User user = dao.findUserByUsernameAndPassword(username, password);
		//设置响应头信息
		resp.setContentType("text/html;charset=utf-8");
		//获取输出流
		PrintWriter  out = resp.getWriter();
		if(user == null ) {
			//登录失败
			out.println("登录失败!!!!");
		}else {
			//登录成功
			out.println("登录成功!!!!");
			}
		out.close();