Javaee学习笔记(四)

JavaEE Servlet实践
本文详细介绍如何在Eclipse中配置Tomcat并创建Servlet,包括文件结构、doPost与doGet方法的区别及其实现,通过示例代码讲解如何处理HTTP请求。

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.youkuaiyun.com/xydoo/article/details/96485241中的代码。
    如果字符串对应的表单变量类型是文本域,那么得到的就是文本域里面的文本。
    如果是单选框或者是复选框或者下拉列表,则得到的就是定义该选项时的value属性值。但返回值是字符串类型的。对应到MySQL里面也就是char或者是varchar类型。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值