Javaee学习笔记(四)

Servlet文件创作举例

本篇博客我们一起来学习一下Javaee中Servlet文件的制作。

eclipse的下载以及相关配置

首先下载的话,建议下载eclipse-jee-photon-R-win32-x86_64这个版本,不要下载阉割版的eclipse-java,否则实现不了本功能。下载完后,会提示你创作一个workplace,个人选择放在了D盘。
之后大家打开文件,首先先建一个这样的文件。
在这里插入图片描述在建立这个文件时,需要配置Tomcat服务器。输入名字后,点击:NEW RUNTIME 选择与自己版本相匹配的服务器,点击next就行。
在这里插入图片描述
之后就会生成这样的一个项目,如下图:
在这里插入图片描述
我给这个项目命名为gbook。
其中,WebContent是个极其重要的文件夹,里面存放着我们的HTML文件以及JSP文件,还有一些要在网页中使用的文件,比如要插入的图像的文件夹,JS文件夹,还有要使用的外部链接库。如下图所示:
在这里插入图片描述
我们要写的java文件和Servlet文件都放在下图的目录下:
(src下面那个叫做包(package)名字大家自己取。)
在这里插入图片描述

Servlet!!!

建立文件

介绍了一大堆准备工作,我们可以开始写Servlet文件了。
按照下图找到Servlet文件建立一个新的文件。
在这里插入图片描述
之后的选项大家默认就好。
生成文件后,大家能找到两个方法,分别是doPost和doGet方法,doGet方法是用于直接访问该Servlet时使用的,或者链接到该Servlet网页的网页使用的是get方式;dopost方法只能是由链接到该网页的前端网页使用post方法时才能调用。
比如下图,我在表单的属性里增加了method="post"语句,就声明将要使用Servlet网页中的doPost方法。如果不写,就默认是使用get。
在这里插入图片描述下面是一段完整的servlet代码,不过里面只写了doPost方法。

package gbook;

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

/**
 * Servlet implementation class GBookServlet
 */
@WebServlet("/GBookServlet")
public class GBookServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("gb2312");
		response.setContentType("text/html;charset=gb2312");//以上两行代码是解决乱码问题的语句。
		String nickname = request.getParameter("nickname");
		if(nickname.trim().equals(""))//trim是剪刀函数,自动将字符串两端的空白截掉
		{
			response.getWriter().append("昵称不能为空!");
			return;//此时return就是不在执行下面的语句
		}
		String gender = request.getParameter("gender");
		String title = request.getParameter("title");
		String content = request.getParameter("content");
		String touxiang = request.getParameter("touxiang");
		DBUtils db = new DBUtils();
		String sql = "insert into gbook(nickname,gender,touxiang,gdate,title,content)"
				+"values('"+nickname+"','"+gender+"','"+touxiang+"',current_timestamp,'"
				+title+"','"+content+"')";
		System.out.println(sql);//该行是将字符串sql打印到控制台上,方便观察是不是sql语句写错了,是一个好习惯。
		db.executeUpdate(sql);
		db.close();
		response.sendRedirect("gbook.jsp");
	}

}

doPost与doGet的区别

首先doPost与doGet是Servlet文件里面的两个方法,当客户端界面的一个请求,比如表单通过“get”方法跳转到此页面时,将会执行doGet方法;若是通过“post”跳转,则会调用doPost方法。当通过“get”跳转时,地址栏中会显示用户端所传参数的值,这就存在一些安全隐患(比如用户提交的是密码)。此时最好就采用post方式跳转。

代码讲解

通过上述方法建好文件之后,我们直接找到doPost方法,在这里面写就好。一些注释在代码里面已经有了,大家可以略作参考。下面讲一讲这个方法里面一些必要的知识。
1.response和request.
response是响应,也就是说是Servlet端向用户端发送信息的一个类。request是请求,就是用户端向服务端发送信息的一个类。

  • request.setCharacterEncoding();这个函数是设置从用户端到服务端信息的码制的。

  • response.setContentType();这个函数是设置从服务端到用户端信息的码制的。

  • request.getParameter();该函数是从用户端抓取信息的一个重要函数,里面可以只写一个字符串类型的参数。这个字符串是与用户端界面的表单内的变量名相匹配的。本代码里面的字符串有nickname,gender,title等,这些都是本人HTML中的一些变量名,详情请见https://blog.csdn.net/xydoo/article/details/96485241中的代码。
    如果字符串对应的表单变量类型是文本域,那么得到的就是文本域里面的文本。
    如果是单选框或者是复选框或者下拉列表,则得到的就是定义该选项时的value属性值。但返回值是字符串类型的。对应到MySQL里面也就是char或者是varchar类型。

  • response.getWriter().append();这个就是对用户端的打印函数,负责在这个界面打印字符串,括号里写字符串。

  • response.sendRedirect();这就是跳转语句,括号里写想要跳转的网页的路径。代码执行到此就会跳转到我们想给用户看的界面。
    本代码中还有一个自己写的工具类DBUtils,是为了方便调用数据库而写的,在此不做详细介绍,后续文章中可能会有说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaEE学习笔记是我自己在学习过程中总结的javaweb各项技术和知识点。它包含了JavaEE的十三种核心技术,分别是JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JTS、JTA、JavaMail和JAF。 JavaEE是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。 在支持JavaBeans规范的开发环境中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBean。JavaBean的优势还在于Java带来的可移植性。所以在JavaEE学习笔记中,你可以找到关于这些核心技术和JavaBean的详细内容和示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [javaEE学习笔记](https://download.csdn.net/download/sugar_map/10268742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [JavaEE学习笔记整理](https://blog.csdn.net/qq_51861704/article/details/124133294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值