其实Servlet很简单,掌握了编程思想,解决问题才是硬道理

Java Web学生管理系统:Servlet+JSP全链路实战指南 Java Web是Web开发的基础技术栈,其核心在于理解HTTP请求响应、Servlet生命周期、JDBC数据库交互与JSP页面渲染的完整闭环。本文围绕经典的学生管理系统案例,深入剖析原生Servlet容器工作原理、web.xml配置规范、MySQL utf8mb4字符集与外键设计、HikariCP连接池调优等关键技术点,强调工程落地中的编码规范、中文乱码、缓存控制、SQL注入防护等高频问题。面向高校课程设计与转行实践者,提供可本地调试、可讲清逻辑、可应对答辩的最小可行系统方案,助力夯实Java Web底层 阅读详情

Servlet入门

今日目标

1. 创建servlet
    xml
    anno(注解)
    
2. servlet执行原理

3. servlet生命周期

4. servlet体系结构

一 Servlet概述

  • servlet= server+applet 运行在服务器端的java小程序。

  • Servlet是一个接口(规范),一个类要想通过浏览器被访问到,那么这个类就必须直接或间接的实现Servlet接口

作用

接收请求,处理业务,响应结果

二 Servlet快速入门

目标:编写一个普通的java类,通过浏览器可以访问

#编写步骤
    1. 定义一个类,实现Servlet接口,重写所有的抽象方法(特别是service方法)
    2. 配置web.xml文件

2.1 代码编写

① 创建web项目

② 编写普通java类,实现servlet接口

重写抽象方法(service方法)

package com.itheima01.servlet;

import javax.servlet.*;
import java.io.IOException;

/*
*  ctrl+i(implements) : 提示重写所有抽象方法
*   ctrl+ enter: 万能提示
* */
public class MyServlet implements Servlet {

    /*
    * servletRequest : 请求
    * servletResponse : 响应
    * */
    @Override
    public void service(ServletRequest servletRequest,
                        ServletResponse servletResponse) throws ServletException, IOException {

        System.out.println("接收到请求"); //控制台打印
        //网页上显示出来,不要写中文,会乱码
        servletResponse.getWriter().print("hello servlet");//响应给浏览器
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

③ 配置web.xml

配置servlet网络访问路径

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!--
        1. servlet和servlet-mapping标签里都有servlet-name子标签
            内部文本可以随意命名,但是必须一致
        2.  servlet-class标签: 写Servlet实现类的全限定名(包名+类名)
        3. url-pattern : 指定的是该Servlet的虚拟路径
    -->
    <servlet>
        <servlet-name>MyServlet01</servlet-name>
        <servlet-class>com.itheima01.servlet.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet01</servlet-name>
        <url-pattern>/myServlet</url-pattern>
    </servlet-mapping>
</web-app>

④ 部署web项目

⑤ 启动测试

2.2 执行原理

三 Servlet相关API

3.1 生命周期方法

3.1.1 思想介绍

  • 生命周期:指的是一个对象从生(创建)到死(销毁)的一个过程

// 1. servlet对象创建时,调用此方法
public void init(ServletConfig servletConfig);
// 2. 用户访问servlet时,调用此方法 (每次访问都会调用一次)
public void service(ServletRequest servletRequest, ServletResponse servletResponse);
// 3. servlet对象销毁时,调用此方法
public void destroy();

* 创建
    1)默认情况下
        用户第一次访问时,创建servlet,执行init方法
    2)修改创建时机
        <load-on-startup></load-onstartup>
            正数:5-N  【服务器启动时,创建】
                补充:Tomcat的web.xml里有1,4 所以推荐5-n 
            负数(默认值):-1 【用户第一次访问时,创建】
    
* 运行(提供服务)
        用户每次访问时,都执行service方法

* 销毁
        服务器正常关闭时,销毁servlet,执行destroy方法

3.1.2 代码演示

① LifeServlet

package com.itheima02.life;

import javax.servlet.*;
import java.io.IOException;
/*
    # 观察
    1. 第一次访问LifeServlet
        init
        service

    2. 再次访问LifeServlet
        service

    3. 关闭tomcat之前
        destroy

   # Servlet中的API
   1. 生命周期方法(lifecycle)
        对象从创建到销毁的整个过程

      1). init : 初始化
            a. 默认情况下,浏览器第一次访问时调用
            b. 适合执行初始化相关的操作: 加载初始配置
      2). service : 服务
            a. 浏览器每次访问,都会执行一次
            b. 处理业务
      3). destroy
            a. tomcat在关闭之前,先执行此方法
            b. 适合释放资源,保存数据

   2. 启动加载
       1). 问题:   init方法默认浏览器第一次访问才调用,
                        如果这时候执行加载数据,为时太晚, 用户体验不好

       2). 解决: tomcat一启动就加载这个Servlet,并且调用init方法
       3). 方式:
                在web.xml的servlet下配置
 */
public class LifeServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("LifeServlet init");
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service");
    }

    @Override
    public void destroy() {
        System.out.println("destroy");
    }

    @Override
    public ServletConfig getServletConfig() {
        System.out.println("getServletConfig");
        return null;
    }



    @Override
    public String getServletInfo() {
        System.out.println("getServletInfo");
        return null;
    }


}

② 配置web.xml

<servlet>
        <servlet-name>LifeServlet</servlet-name>
        <servlet-class>com.itheima02.life.LifeServlet</servlet-class>
        <!--
            load-on-startup (写在servlet标签内)
            1. 取值是整数n
            2. 默认 n=-1,表示不启动加载(第一次访问才会被加载)
            3. 当n>=0的时候, 启动加载(数字越小,优先级越高)
        -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>LifeServlet</servlet-name>
        <url-pattern>/life</url-pattern>
    </servlet-mapping>

3.1.3 启动加载

# 启动加载
*       1)问题: 发现 init 默认第一次被访问的时候才调用,适合用来初始化项目数据
*           如果项目数据很多, 加载就需要一定的时间,这样就会给第一个用户的体验不好,因为要等比较久
*
*       2)解决: 服务器一启动,就执行init方法
*       
*       3) 实现: 要在web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>MyServlet_sb</servlet-name>
        <servlet-class>com.itheima01.servlet.MyServlet</servlet-class>
        <load-on-startup>6</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet_sb</servlet-name>
        <url-pattern>/myServlet</url-pattern>
    </servlet-mapping>

    <!--
       # 启动加载
       1)问题: 发现 init 默认第一次被访问的时候才调用,适合用来初始化项目数据
           如果项目数据很多, 加载就需要一定的时间,这样给第一个用户打来的体验不好,因为要等比较久

       2)解决: 服务器一启动,就执行init方法

       3) 实现: 要在web.xml配置
            1). servlet标签内补充一个子标签 load-on-startup (启动时加载)
            2). 在load-on-startup里写一个非负整数
                n >= 0  , 数字越小,优先级越高 (我们自己写n=5开始写, 0~4被tomcat使用掉了)
                默认n=-1, 表示启动时不加载
    -->
    <servlet>
        <servlet-name>LifecycleServlet</servlet-name>
        <servlet-class>com.itheima02.life.LifecycleServlet</servlet-class>
        <load-on-startup>5</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>LifecycleServlet</servlet-name>
        <url-pattern>/LifecycleServlet</url-pattern>
    </servlet-mapping>
</web-app>

四 Servlet体系结构

快捷键:
    1. ctrl + alt + u : 查看一个类的继承结构图
    2. ctrl + h : 这个类的简化版继承结构(类)

1

4.1 GenericServlet

1. 问题: 
    Servlet中使用频率最高,最重要的方法是service方法(大部分场景)
    但是我们每次编写Servlet实现类,都是直接实现Servlet接口,重写5个抽象方法(太冗余了)

2. 需求: 如果我们以后编写Servlet实现类,只要重写service方法就好了
3. 解决:
        1). 建立一个抽象类GenericServlet, 继承Servlet接口,重写除了service之外的四个抽象方法,空实现 
        2). 以后编写其他Servlet,只要继承 GenericServlet, 这时候就只要重写service方法

4. 发现 : 很巧, 开发包已经有了这个类GenericServlet

① 编写普通java类,继承GenericServlet抽象类

public class GoodServlet extends GenericServlet {

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("GoodServlet被访问");
    }
    
}

② 配置web.xml

    <servlet>
        <servlet-name>GoodServlet</servlet-name>
        <servlet-class>com.itheima03.generic.GoodServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GoodServlet</servlet-name>
        <url-pattern>/goodServlet</url-pattern>
    </servlet-mapping>

4.2 HttpServlet

1. 问题: 
      我们在前端的form表单中,method属性, 学习过有两种常用的请求方式(get/post)
      我们现在的service方法是这样的: 用户发送请求,无论是什么请求方式,都会统一的执行service方法, 我们无法很好的区别是哪一种请求方式
      
2. 需求: 我们如果想确切的知道是哪一种请求方式,必须要先了解HttpServletRequest

3. 解决: 自己封装了一个MyHttpServlet  -> 开发包 HttpServlet

① 编写前端html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

        <a href="http://localhost:8080/day04-servlet/HahaServlet">HahaServlet</a>
        <form action="http://localhost:8080/day04-servlet/HahaServlet" method="post">
            <input type="submit">
        </form>
</body>
</html>

② 编写普通java类,继承HttpServlet抽象类

package com.itheima04.http;

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

/*
    HttpServlet是GenericServlet的子类

    1. HttpServlet重写了service方法
    2. 在service方法中,根据请求方式(http协议)的不同,将service拆分成不同的方法
         1). 有两种常用的请求方式
                get
                post
         2). 用户发送请求时(用户在浏览器中访问servlet的地址)
                service方法就会执行 (接着就会判断)
                    get请求方式 -> doGet
                    post请求方式 -> doPost

 */
public class HahaServlet extends HttpServlet {

    //这是post请求方式的service方法
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post请求方式");
    }
    //基本上请求方式默认都是get
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get请求方式");
    }
}

③ 配置web.xml

 <servlet>
        <servlet-name>HahaServlet</servlet-name>
        <servlet-class>com.itheima04.http.HahaServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HahaServlet</servlet-name>
        <url-pattern>/HahaServlet</url-pattern>
    </servlet-mapping>

4.3 经验值分享

① 响应状态码405

请求方法没有重写.....

    /*
        注意: 如果我们不重写doGet/doPost方法, 那么父类的doGet/doPost方法会执行(继承)
            给浏览器响应一个错误: 状态码405 (http1.1)
     */

② 响应状态码500

java代码写错了...

1

五 Servlet路径

5.1 url-pattern

作用:将一个请求网络地址和servlet类建立一个映射关系

1

5.1.1 Servlet映射多个url

1

5.1.2 url映射模式【了解】

配置 url地址取值可以是:

1. 精确匹配(掌握) 
        /servletDemo3  
2. 目录匹配 
        /aa/*
3. 后缀匹配 
        *.xxx   例如:*.do

<servlet-mapping>
        <servlet-name>PathServlet</servlet-name>
        <!--
            Servlet的路径(虚拟路径)
            1. 一个Servlet可以配置多个虚拟路径  -> 了解 (在Filter中有用)
            2. 一个Servlet的路径有三种写法
                2.1  精确匹配(掌握)
                        /servletDemo3
                2.2  目录匹配
                        /aa/*
                2.3 后缀匹配
                        *.xxx   例如:*.do

        -->
        <url-pattern>/bbb/ccc</url-pattern>
        <url-pattern>/aa/*</url-pattern>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
<servlet-mapping>
    <servlet-name>PathServlet</servlet-name>
    <url-pattern>/pathServlet03</url-pattern>
</servlet-mapping>

5.2 相对/绝对路径

● 现阶段我们访问资源的方式越来越多,请求路径在编写时难免出现混淆

  1. 浏览器的地址栏 (输入服务器某个资源地址,敲回车会发送请求)
  2. a标签的href属性 (超链接被点击的时候会发送请求)
  3. form表单的action属性 (form中的submit按钮被点击的时候,发送请求)
  4. js的loation.href属性 (只要设置, 触发相应的)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <a href="http://www.baidu.com">超链接</a> <br>

    <form action="http://www.baidu.com">
        <input type="text" name="username"> <br>
        <input type="submit">
    </form>

    <input type="button" value="按钮" id="myid">
    <script>
        //js
        document.getElementById("myid").onclick = function () {
            //bom对象: window,location地址栏
            location.href = "http://www.baidu.com"
        }
    </script>
</body>
</html>

这里我们复习下路径规则:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
        <!--
            html页面中,难免书写url

            1. 绝对路径
                a. http://localhost:8080/day01-servlet/PathServlet
                b. /day01-servlet/PathServlet (省略了三要素,前提: 当前页面和所访问的资源必须在同一服务器上)
                        内部资源, 推荐!!!

            2. 相对路径
                1) ../ 是上一级
                2) ./ 是平级,可以省略
        -->
        <a href="http://www.baidu.com">百度</a> <br>
        <a href="http://localhost:8080/day01-servlet/PathServlet">我的PathServlet</a> <br>
        <a href="/day01-servlet/PathServlet">我的PathServlet2</a> <br>

        <a href="http://localhost:8080/day01-servlet/doc/aaa.html">aaa.html绝对路径写法</a>
        <a href="doc/aaa.html">aaa.html相对写法</a>
</body>
</html>

六 Servlet3.0

● 通过注解配置Servlet,简化web.xml配置Servlet复杂性,提高开发效率,几乎所有的框架都在使用注解

① 创建web工程【注解】

1

② 编写普通java类,继承HttpServlet

public class QuickServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("QuickServlet....3.0");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("QuickServlet....3.0");
    }
}

// @WebServlet(name = "QuickServlet",urlPatterns = "/quickServlet")
// @WebServlet(urlPatterns = "/quickServlet")
// @WebServlet(value = "/quickServlet")
@WebServlet("/quickServlet") // 注解中有且仅有一个属性,名为value时,属性名可以省略...
public class QuickServlet extends HttpServlet {
    
}

idea创建web模块的规律

tomcat可以同时运行多个web模块,但是现在一般只运行一个模块

注意: project structure中要设置这两项

Servlet + JSP 实现学生信息管理系统:原理到部署全指南 在Java Web开发中,理解HTTP请求如何被处理、服务端如何渲染页面以及数据如何持久化,是构建Web应用的基础能力。Servlet作为请求处理器,负责接收参数与业务逻辑;JSP作为视图模板,将数据渲染为HTML;JDBC则完成数据库的读写操作。这三者组合构成了经典的学生信息管理系统技术栈。通过Maven管理项目依赖,使用IDEA搭建标准骨架,配合MySQL设计数据表,即可实现从登录验证到增删改查的完整流程。本文详解技术选型、代码实现、常见坑点(如Tomcat版本差异、中文乱码)以及war包部署到Tomc 阅读详情

相关推荐

MATLAB新手必看:Stewart平台运动学逆解从入门到实战(附完整代码)

本文详细介绍了如何使用MATLAB实现Stewart平台的运动学逆解,从基础原理到完整代码实现,涵盖并联机器人的数学建模、MATLAB编程和Simulink集成。通过实战案例和可视化分析,帮助新手快速掌握Stewart平台的运动学逆解技术,适用于机器人学和控制理论领域的研究与应用。

dream的博客 551

【Java寒假打卡】JavaWeb-Servlet基础

【Java寒假打卡】JavaWeb-Servlet基础

qq_44653420的博客 1885

07- Rossmann商店销售预测 (Xgboost集成算法) (项目七)

Rossmann在欧洲国家经营着3000多家日化用品超市。目前,Rossmann商店经理的任务是提前6周预测他们的日销售额。商店的销售受到许多因素的影响,包括促销、竞争、学校和国家假日、季节性和地域性。由于数以千计的管理者根据自己的特殊情况预测销售,结果的准确性可能会有很大的差异。 因此使用机器学习算法对销量进行预测,Rossmann要求预测德国1115家商店的6周日销售额。可靠的销售预测使商店经理能够制定有效的员工时间表,提高生产力和积极性。

March_A的博客 2460

微信小程序点餐系统 v1.0 性能优化:5项关键指标提升页面渲染速度30%

本文详细介绍了微信小程序点餐系统v1.0的性能优化实战,通过5大核心策略提升页面渲染速度30%。重点包括WXML列表渲染优化、setData的进阶使用、性能监测体系构建、内存优化实战案例以及编译与分包策略,帮助开发者显著提升用户体验和转化率。

weixin_30607029的博客 612

准静态电磁场

叠加法 缺点:对于连续分布的电荷,叠加法的计算比较困难 虚位移法 概念 广义坐标:确实系统中导体形状、尺寸与位置的一组独立几何量。 广义力:企图改变某一广义坐标的力。 功:广义力乘上由它引起的广义坐标的改变量。 公式 ...

qq_35912930的博客 1860

用Python手把手教你实现一个多层感知机(MLP)——从理论到代码实战

本文详细介绍了如何使用Python和Theano库从零开始实现多层感知机(MLP),涵盖从核心原理到代码实战的全过程。通过构建隐藏层、输出层和完整MLP模型,结合权重初始化、激活函数选择和训练技巧,帮助开发者深入理解神经网络工作机制,并应用于实际机器学习任务。

web39explorer的博客 970

servlet 的原理以及应用,没有多难

大家好,今天分享一下 servlet 的原理 可以看这个(如果从流程的角度上去解释) 或者这个 看的懂哪个看哪个 如果是从代码实现的角度上 servlet的核心就是在服务器端创建用户请求的对象 我在下面使用大白话讲一遍 用户通过浏览器访问网站 首先使用浏览器向网站的服务器发送http 请求 服务器使用servlet引擎来处理请求,然后会选择响应的servlet 来响应这个请求,并且将响应的结果交给浏览器 servlet 引擎访问servlet的过程分为两种情况 第一次访问 ser

weixin_47556601的博客 381

速腾Helios-16P使用Lego-loam实时构建点云地图(二)——Lego-loam的编译与运行

不兼容的问题,打开lego-loam的~/lego-loam_ws/src/LeGO-LOAM/LeGO-LOAM/src下的4个源码文件,搜索/camera_init,将所有/camera_init改成camera_init,也就是去掉斜杠,这样再回到工作空间重新编译lego-loam。3、速腾16线激光雷达RS-16 ----- 3D建图算法LeGO-LOAM的使用(Ubuntu18.04 + ROS Melodic)_速腾16线 lego loam_杰尼君的博客-优快云博客。

qq_59475883的博客 2567

java里servlet难学吗,Servlet还有学习的必要吗?(手工搭建Servlet)

前言在初学Java web的时候,就曾听到过这样一种说法:java Web的演变过程大概可以分为4个阶段:jsp + Servlet + jdbcspring + struts2+ hibernate(ssh)spring + SpringMVC + mybatis(ssm)微服务阶段。所以学习 Java web,可以从第3个阶段开始学习,不用再去关注Servlet,那么Servlet是否还有学习...

weixin_30840919的博客 1693

基于OpenCV C++实现工业级形状模板匹配:仿Halcon SBM算法全解析

在计算机视觉和工业自动化领域,模板匹配是一项基础且关键的技术,用于在图像中定位已知目标。其核心原理是通过计算图像区域与预设模板之间的相似度来识别目标位置。传统的基于灰度值的匹配方法对光照变化敏感,鲁棒性不足。而基于边缘梯度方向的形状匹配技术,通过计算轮廓梯度方向的一致性进行相似度度量,从根本上提升了对光照变化的鲁棒性,并支持目标的旋转与缩放,技术价值显著。这项技术广泛应用于工业视觉检测、机器人引导、PCB定位等对精度和稳定性要求极高的场景。本文聚焦于使用开源OpenCV库,从底层仿照Halcon的Shape

weixin_33691817的博客 500

不只是抓取:用五指灵巧手(ROH-A001/RH56)玩转ROS2下的力控与混合控制

本文深入探讨了在ROS2环境下使用五指灵巧手(ROH-A001/RH56)实现力控与混合控制的实战技巧。从硬件通信协议解析到ROS2节点开发,详细介绍了力感知架构、实时数据处理和混合控制策略,帮助开发者在Ubuntu系统中高效实现精密操作。通过鸡蛋抓取等实例,展示了力控技术在机器人灵巧操作中的关键作用。

weixin_28221501的博客 286

Servlet好麻烦啊,不用怕,SpringMVC来拯救你

SpringMVC相当于是Spring的一个衍生,SpringMVC和Spring一样,也需要用到依赖注入,用到控制反转,需要容器进行配置对象,只不过它在此基础上深层次地封装了Servlet,在此之前我们在做web开发时,都是用Servlet进行开发进行接收参数和响应页面,但是在这过程中我们发现操作会有些复杂,而在SpringMVC出现后,极大方便了我们的web开发与使用,特别是参数接收、文件上传、表单验证等方面。

aljp123的博客 332

告别手动脚本!用TSMaster Python小程序5分钟搞定CAN报文自动发送

本文介绍了如何使用TSMaster的Python小程序功能快速实现CAN报文自动发送,大幅提升汽车电子测试效率。通过简洁的Python代码示例,展示了如何替代传统手动操作和复杂C脚本,实现周期性发送、动态修改报文内容等常见需求,帮助工程师5分钟内完成自动化配置。

weixin_30292843的博客 510

怎样学Java才是硬道理

本文摘自:做软件开发大概有6年多了,从事JAVA开发大概4年多,现在在网上总是看到大家在讨论什么架构比什么架构好,什么技术比什么技术强.对这个我想谈谈我的几点看法.第一、我觉得谈架构是需要有资格的.如果你THINK JAVA或JAVA核心技术这两本书还有很多你不能理解 那么你最好先把其中的一本看个滚瓜烂熟,再去看其他技术.你SERVLET用得很熟练了么?如果没有,那么 strust你应该先...

weixin_34295316的博客 201

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

告诉你怎样学Java才是硬道理

做软件开发大概有6年多了,从事JAVA开发大概4年多,现在在网上总是看到大家在讨论什么架构比什么架构好,什么技术比什么技术强.对这个我想谈谈我的几点看法.   第一、我觉得谈架构是需要有资格的。如果你THINK JAVA或JAVA核心技术这两本书还有很多你不能理解 那么你最好先把其中的一本看个滚瓜烂熟,再去看其他技术。你SERVLET用得很熟练了么?如果没有,那么 strust你应该先停

毛毛的狗窝 1923

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

牛人告诉你怎样学Java才是硬道理

做软件开发大概有6年多了,从事JAVA开发大概4年多,现在在网上总是看到大家在讨论什么 架构比什么架构好,什么技术比什么技术强.对这个我想谈谈我的几点看法.   第一、我觉得谈架构是需要有资格的。             如果你THINK JAVA或 JAVA核心技术这两本书还有很多你不能理解 那 么你最好先把其中的一本看个滚瓜烂熟,再去看其他技术。你SERVLET用

zhangzhikaixinya的专栏 1169

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

程序员怎样学Java才是硬道理?

怎样学Java才是硬道理? - 从最近的目标开始

小码农 TT 508

Servlet学习二

昨天学习了Servlet的一些知识。将这些知识串起来写了一个小代码,加深映象。1.题目要求如下: 在web.xml文件中设置两个WEB应用的初始化参数,user,password。定义一个login.html,里面定义两个请求字段:user,password.发送请求到loginServlet。在创建一个LoginServlet,在其中获取请求的user,password。比对其和web.xml文

yiran9741的博客 346

告诉你怎样学Java才是硬道理(转自chinaitlab)

做软件开发大概有6年多了,从事JAVA开发大概4年多,现在在网上总是看到大家在讨论什么架构比什么架构好,什么技术比什么技术强.对这个我想谈谈我的几点看法.   第一、我觉得谈架构是需要有资格的。如果你THINK JAVA或JAVA核心技术这两本书还有很多你不能理解 那么你最好先把其中的一本看个滚瓜烂熟,再去看其他技术。你SERVLET用得很熟练了么?如果没有,那么 strust你应该先停下来。如果

chenroujie的专栏 792

基础不牢,地动山摇

搞了一年的程序,考,才发现基础才是硬道理.毕业就搞EJB,以为自己真的很牛呢,后来才发现自己的JSP,SERVLET,STRUTS还没真正弄明白呢.咳呀,做人呀,首先要以平常心来对待,骗了自己,骗不了给你钱的人.基础不牢,地动山摇.

新宾二亮子 1531
上一篇: Java面向对象总结
下一篇: 在企业中UITableView用处太大了,学会如何去封装和优化真的很重要,给您的工作带来很多便利
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值