SSM框架基础入门学习1——servlet入门实例(包含mysql增查,实例免费下载)

暑期这段时间刚好有空,想把SSM框架的东西整理一下,所以准备写SSM入门的东西和大家一起学习,有什么问题请指出,我一定改正!!!

再整合SSM框架知识的时候,太多太杂,回过头来下发现基础是多么的重要。这篇文章将讲解servlet的基础知识,如何使用它。讲解过程更加注重工程应用方面,由于只是座一个简单的demo,所以代码结构一定会有问题,请您见谅。但是,通过demo一定要学懂servlet的运行机制,这样才有利于以后的学习.

     本实例免费下载

第一步:

开发环境就是java1.7,tomcat8.0,mysql,用eclipse新建一个web工程。。。(老掉牙的不说了),项目代码免费下载,都准备好后项目结构为:


SSM框架基础入门学习1——servlet入门实例(包含mysql增查,实例免费下载)_第1张图片

        左边为项目结构,右边为web.xml;web项目在启动的时候会加载这个文件,应该是J2EE标准吧。这个xml文件里可以定义很多servlet容器相关的东西,以后SSM框架的配置文件都是基于它的。当前我们只用到2个东西,第一个是welcome-file-list,它代表访问项目时应该调用哪个jsp。第二个就是比较重要的servlet访问设置:
他们是两个成对出现的,根据servlet-name相匹配,当访问index时,就请求com.serverlet.Index类:


import java.io.IOException;
import java.io.PrintWriter;

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


public class Index extends HttpServlet {
       

	public void init() throws ServletException {
		System.out.println("我是Index init()方法!用来进行初始化工作");
		}
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
        out.println(" 您好!");//利用PrintWriter对象的方法将数据发送给客户端 
        out.close(); 
        System.out.println("我是Index  doGet()方法!用来处理Get请求");
        
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("我是Index  doPost()方法!用来处理post请求");
		doGet(request, response);
	}
	
	public void destroy() {
		super.destroy();
		System.out.println("我是Index  destroy()方法!用来进行销毁实例的工作");
	}

}


第二步:

servlet的加载过程Index类中的方法都根据标准是固定的,servlet的本质就是一个java类,所以它的生命周期是:

1.初始化阶段,调用init()方法。就是加载之前的xml等杂七杂八的东西启动它。

2.相应请求阶段,调用service()。这里就是根据你的请求访问对应的servlet,如index请求访问Index类。如果是第一次请求会执行Index的初始化方法init(),然后service根据请求时get还是post访问不同的方法,在servlet销毁时会调用destroy();这里注意,servlet是线程不安全的。(面试会被问)因为其他请求来了之后,只会新建线程然后执行此servlet的方法,不会再次初始化了(也就是说大家都穿一条裤子了)。这样效率高,但不是线程安全的。

3.终止,上边说过了。

第三步:

连接mysql通过第一第二步,已经可以开发静态的网站了。那么连接上数据库,就可以写一个大作业啦!!!本实例采用jdbc接口,最原始的方法连接mysql数据库,当然现在项目没人用这个,简单写出来只是为以后理解SSM框架的持久层做铺垫。 以下是查询代码



package com.serverlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AllUser extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		Connection conn = null;
		try {
			// 获取链接
			Class.forName("com.mysql.jdbc.Driver");
			//我的数据库没有设密码
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?user=root&password=");
			Statement stat = conn.createStatement();
			// 执行sql
			String sql = "select * from t_user ";
			ResultSet rs = stat.executeQuery(sql);
			while (rs.next()) {
				out.println("||");// 利用PrintWriter对象的方法将数据发送给客户端
				out.println(rs.getString(1)+"  "+rs.getString(2)+"  "+rs.getString(3)+"");
			} 
			if (stat != null)
				stat.close();
			if (rs != null)
				rs.close();
			if (conn != null)
				conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  finally{
			out.close();
			System.out.println("我是AllerUser doGet()方法!用来处理Get请求");
		}
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("我是AllerUser  doPost()方法!用来处理post请求");
		doGet(request, response);
	}
	
	public void destroy() {
		super.destroy();
		System.out.println("我是AllerUser destroy()方法!用来进行销毁实例的工作");
	}
	
	public void init() throws ServletException {
		System.out.println("我是AllerUser init()方法!用来进行初始化工作");
		}

}



我们结合上述实例再熟悉一下servlet的流程:
当前台发送这个http://localhost:8080/Serverlt/allUser 请求时,servlet容器会检查xml然后把请求发给对应的AllUser类。根据请求的不同访问不同的方法,如果是第一次访问此类要先初始化,否则直接调用对应方法。方法中写了JDBC连接mysql4大步骤,注册、连接、请求操作、返回。然后把返回的内容直接发到客户端(也就是你请求的网页啦~)

这样,简单的servlet就学会了。如果在servlet处理数据后,用jsp渲染视图那就用 
        request.setAttribute("i", "iii");
        request.getRequestDispatcher("/index.jsp").forward(request, response);
<%  
   out.println((String)request.getAttribute("i"));  
%>

记得提前把数据都存好,再发过去在前台用。SSM框架中,视图这里直接用表达式就可以。
下篇文章将介绍Spring入门实例,明天再写吧!

源码下载地址:


http://download.csdn.net/detail/nwpumaster/9584346



        

你可能感兴趣的:(J2EE)