我正在参加「掘金·启航计划」
☀写在开头:
芜湖,很久没有写文章了,很感谢掘金的邀请,呜呜,第一次得到邀请。那么下面就是本片正文部分了。
新学期开始了,这次我们学校的课程多了一个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+" ");
}
out.print("<br>");
}
%>
</body>
</html>
看到" "大家是不是会疑惑,不是说里面是Java代码吗?为什么会混入前端的空格?
servlect
实现servlect方法就是继承相关类(HttpServlet) 实现相关类接口后重写方法可以是doxx也可以是service方法
这是我书写的一个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>
其实还可以使用配置方法:
这样就不需要自己单独配置了
具体登录功能的实现步骤
- 在登录页面中录入用户名和密码,点击登录按钮提交登录请求
- 在LoginServlet中通过request对象获取到页面表单提交的用户名和密码
- 调用Dao对象,将用户提交的用户名和密码与数据库的用户表的数据进行匹配
- 得出结果,完成响应.
/*
* 处理登录请求的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();