servlet(2)

                    1. 使用 JavaEE 版的 Eclipse 开发动态的 WEB 工程(JavaWEB 项目)
                                         1). 把开发选项切换到 JavaEE
                                         2). 可以在 Window -> Show View 中找到 Package Explorer, 并把其拖拽到开发区的左边
                                         3). 在 Servers 面板中新建 Tomcat 服务器. 一定要关联到 Tomcat 安装的根目录
                                         4). 新建一个 Dynamic Web Project. 其中 Target Runtime 需选择 Tomcat6.0
                                         5). 开发 Java WEB 应用
                                         6). 可以通过 run on server 来运行 WEB 项目.

                     2. Servlet 的 HelloWorld
                                        1). 创建一个 Servlet 接口的实现类.
                                                 public class HelloServlet implements Servlet

2). 在 web.xml 文件中配置和映射这个 Servlet

<!-- 配置和映射 Servlet -->
                                                            <servlet>
                                                   <!-- Servlet 注册的名字 -->
                                                                  <servlet-name>helloServlet</servlet-name>
                                                   <!-- Servlet 的全类名 -->
                                                                <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class>
                                                         </servlet>

<servlet-mapping>
                                                <!-- 需要和某一个 servlet 节点的 serlvet-name 子节点的文本节点一致 -->
                                                                <servlet-name>helloServlet</servlet-name>
                                                <!-- 映射具体的访问路径: / 代表当前 WEB 应用的根目录. -->
                                                                <url-pattern>/hello</url-pattern>
                                                     </servlet-mapping>

                   3. Servlet 容器: 运行 Servlet、JSP、Filter 等的软件环境.
                                        1). 可以来创建 Servlet, 并调用 Servlet 的相关生命周期方法.
                                        2). JSP, Filter, Listener, Tag ...

4. Servlet 生命周期的方法: 以下方法都是由 Serlvet 容器负责调用.
                                       1). 构造器: 只被调用一次. 只有第一次请求 Servlet 时, 创建 Servlet 的实例. 调用构造器.
                                                      这说明 Serlvet 的单实例的!
                                       2). init 方法: 只被调用一次. 在创建好实例后立即被调用. 用于初始化当前 Servlet.
                                       3). service: 被多次调用. 每次请求都会调用 service 方法. 实际用于响应请求的.
                                       4). destroy: 只被调用一次. 在当前 Servlet 所在的 WEB 应用被卸载前调用. 用于释放当前 Servlet 所占用的资源.

5 load-on-startup 参数:
                                     1). 配置在 servlet 节点中:

<servlet>
                                               <!-- Servlet 注册的名字 -->
                                                                         <servlet-name>secondServlet</servlet-name>
                                               <!-- Servlet 的全类名 -->
                                                                         <servlet-class>com.atguigu.javaweb.SecondServlet</servlet-class>
                                               <!-- 可以指定 Servlet 被创建的时机 -->
                                                                        <load-on-startup>2</load-on-startup>
                                                             </servlet>

 2). load-on-startup: 可以指定 Serlvet 被创建的时机. 若为负数, 则在第一次请求时被创建.若为 0 或正数, 则在当前 WEB 应用被
                                                     Serlvet 容器加载时创建实例, 且数组越小越早被创建.

                    6. 关于 serlvet-mapping:

   1). 同一个Servlet可以被映射到多个URL上,即多个 <servlet-mapping> 元素的<servlet-name>子元素的设置值可以是同一个
                                            Servlet的注册名。

2). 在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:
                                              一种格式是“*.扩展名”,        另一种格式是以正斜杠(/)开头并以“/*”结尾。

<servlet-mapping>
                                              <servlet-name>secondServlet</servlet-name>
                                              <url-pattern>/*</url-pattern>
                                        </servlet-mapping>

OR

<servlet-mapping>
                                                 <servlet-name>secondServlet</servlet-name>
                                                <url-pattern>*.do</url-pattern>
                                       </servlet-mapping>

注意: 以下的既带 / 又带扩展名的不合法.

<servlet-mapping>
                                               <servlet-name>secondServlet</servlet-name>
                                              <url-pattern>/*.action</url-pattern>
                                         </servlet-mapping>

      7. ServletConfig: 封装了 Serlvet 的配置信息, 并且可以获取 ServletContext 对象

1). 配置 Serlvet 的初始化参数

<servlet>
                                                <servlet-name>helloServlet</servlet-name>
                                                <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class>
                                       <!-- 配置 Serlvet 的初始化参数。 且节点必须在 load-on-startup 节点的前面 -->
                                              <init-param>
                                       <!-- 参数名 -->
                                                   <param-name>user</param-name>
                                       <!-- 参数值 -->
                                                   <param-value>root</param-value>
                                              </init-param>

<init-param>
                                                  <param-name>password</param-name>
                                                  <param-value>1230</param-value>
                                             </init-param>
                                            <load-on-startup>-1</load-on-startup>
                                   </servlet>

2). 获取初始化参数:

> getInitParameter(String name):    获取指定参数名的初始化参数
                                     > getInitParameterNames():            获取参数名组成的 Enumeration 对象.
                                       String user = servletConfig.getInitParameter("user");
                                        System.out.println("user: " + user);

Enumeration<String> names = servletConfig.getInitParameterNames();
                                       while(names.hasMoreElements()){
                                                String name = names.nextElement();
                                                String value = servletConfig.getInitParameter(name);
                                                System.out.println("^^" + name + ": " + value);
                                           }

  3). 获取 Serlvet 的配置名称(了解)

      8. ServletContext

 1). 可以由 SerlvetConfig 获取:       ServletContext servletContext = servletConfig.getServletContext();

 2). 该对象代表当前 WEB 应用: 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.

①. 获取当前 WEB 应用的初始化参数

设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取.

<!-- 配置当前 WEB 应用的初始化参数 -->
                                   <context-param>
                                             <param-name>driver</param-name>
                                              <param-value>com.mysql.jdbc.Driver</param-value>
                                  </context-param>

方法:

getInitParameter
                                  getInitParameterNames

代码:

ServletContext servletContext = servletConfig.getServletContext();
                                 String driver = servletContext.getInitParameter("driver");
                                 System.out.println("driver:" + driver);

Enumeration<String> names2 = servletContext.getInitParameterNames();

while(names2.hasMoreElements()){
                                       String name = names2.nextElement();
                                      System.out.println("-->" + name);
                                    }

  3).  取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径

getRealPath(String path);

                               代码:

String realPath = servletContext.getRealPath("/note.txt");
                                   System.out.println(realPath);

 4). 获取当前 WEB 应用的名称:

getContextPath()

代码:

String contextPath = servletContext.getContextPath();
                                                      System.out.println(contextPath);

  5). 获取当前 WEB 应用的某一个文件对应的输入流.

getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.

代码:

InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");

 6). 和 attribute 相关的几个方法:

                9. GET 请求和 POST 请求:

1). 使用GET方式传递参数:

①. 在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET。
                                            ②. 如果网页中的<form>表单元素的 method 属性被设置为了“GET”,浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET。
                                            ③. 使用GET请求方式给WEB服务器传递参数的格式:

http://www.atguigu.com/counter.jsp?name=lc&password=123

④. 使用GET方式传送的数据量一般限制在 1KB 以下。

2). 使用 POST 方式传递参数:

①. POST 请求方式主要用于向 WEB 服务器端程序提交 FORM 表单中的数据: form 表单的 method 置为 POST
                                             ②. POST 方式将各个表单字段元素及其数据作为 HTTP 消息的实体内容发送给 WEB 服务器,传送的数据量要比使用GET方式传送的数据量大得多。

POST /counter.jsp HTTP/1.1
                                                           referer: http://localhost:8080/Register.html
                                                           content-type: application/x-www-form-urlencoded
                                                           host: localhost:8080
                                                           content-length: 43

name=zhangsan&password=123 --请求体中传递参数.

                  10. 如何在 Serlvet 中获取请求信息:

  1). Servlet 的 service() 方法用于应答请求: 因为每次请求都会调用 service() 方法

public void service(ServletRequest request, ServletResponse response)
                                    throws ServletException, IOException
                                       ServletRequest: 封装了请求信息. 可以从中获取到任何的请求信息.
                                       ServletResponse: 封装了响应信息, 如果想给用户什么响应, 具体可以使用该接口的方法实现.

这两个接口的实现类都是服务器给予实现的, 并在服务器调用 service 方法时传入.

    2). ServletRequest: 封装了请求信息. 可以从中获取到任何的请求信息.

①. 获取请求参数:

> String getParameter(String name): 根据请求参数的名字, 返回参数值.
                                        若请求参数有多个值(例如 checkbox), 该方法只能获取到第一个提交的值.

> String[] getParameterValues(String name): 根据请求参数的名字, 返回请求参数对应的字符串数组.

> Enumeration getParameterNames(): 返回参数名对应的 Enumeration 对象,
                                              类似于 ServletConfig(或 ServletContext) 的 getInitParameterNames() 方法.

> Map getParameterMap(): 返回请求参数的键值对: key: 参数名, value: 参数值, String 数组类型.

②. 获取请求的 URI:

HttpServletRequest httpServletRequest = (HttpServletRequest) request;
                                            String requestURI = httpServletRequest.getRequestURI();
                                             System.out.println(requestURI); // /day_29/loginServlet

③. 获取请求方式:

String method = httpServletRequest.getMethod();
                                             System.out.println(method); //GET
                                      ④. 若是一个 GET 请求, 获取请求参数对应的那个字符串, 即 ? 后的那个字符串.

String queryString = httpServletRequest.getQueryString();
                                           System.out.println(queryString); //user=atguigu&password=123456&interesting=game&interesting=party&interesting=shopping

⑤. 获取请求的 Serlvet 的映射路径
                                            String servletPath = httpServletRequest.getServletPath();
                                           System.out.println(servletPath); // /loginServlet

⑥. 和 attribute 相关的几个方法:

             3). HttpServletRequest: 是 SerlvetRequest 的子接口. 针对于 HTTP 请求所定义. 里边包含了大量获取 HTTP 请求相关的方法.

                                 4). ServletResponse: 封装了响应信息, 如果想给用户什么响应, 具体可以使用该接口的方法实现.

①. *getWriter(): 返回 PrintWriter 对象. 调用该对象的 print() 方法, 将把 print() 中的参数直接打印
                                                   到客户的浏览器上.

②. 设置响应的内容类型: response.setContentType("application/msword");

③. void sendRedirect(String location): 请求的重定向. (此方法为 HttpServletResponse 中定义.)

注意:

在 web.xml 文件中设置两个 WEB 应用的初始化参数, user, password.
                                                    定义一个 login.html, 里边定义两个请求字段: user, password. 发送请求到 loginServlet
                                                    在创建一个 LoginServlet, 在其中获取请求的 user, password. 比对其和 web.xml 文件中定义的请求参数是否一致
                                                    若一致, 响应 Hello:xxx, 若不一致, 响应 Sorry: xxx xxx 为 user.

  11.代码区

                  

package com.atguigu.javaweb;import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class HelloServlet implements Servlet{public HelloServlet() {System.out.println("HelloServlet's constructor");}@Overridepublic void destroy() {System.out.println(" HelloServlet destroy");}@Overridepublic ServletConfig getServletConfig() {System.out.println("getServletConfig");return null;}@Overridepublic String getServletInfo() {System.out.println("getServletInfo");return null;}@Overridepublic void init(ServletConfig servletConfig) throws ServletException {//load-on-startup 在web.xml 配置的是3  所以第三启动initSystem.out.println("Holloservlet  init");String user = servletConfig.getInitParameter("user");System.out.println("user: " + user);//user: rootEnumeration<String> names = servletConfig.getInitParameterNames();while(names.hasMoreElements()){String name = names.nextElement();String value = servletConfig.getInitParameter(name);System.out.println("^^" + name + ": " + value);}/*  ^^password: 1230^^user: root*/String serlvetName = servletConfig.getServletName();System.out.println(serlvetName); //helloServlet//获取 ServletContext 对象ServletContext servletContext = servletConfig.getServletContext();String driver = servletContext.getInitParameter("driver");System.out.println("driver:" + driver);//driver:com.mysql.jdbc.Driver
        Enumeration<String> names2 = servletContext.getInitParameterNames();while(names2.hasMoreElements()){String name = names2.nextElement();System.out.println("-->" + name); }/*-->driver-->jdbcUrl*/String realPath = servletContext.getRealPath("/note.txt");//不是: E:\Java\Source\atguigu\java-1\day_29\WebContent\note.txt
        System.out.println(realPath);//真实路径:D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\day_29\note.txt
String contextPath = servletContext.getContextPath();System.out.println(contextPath); ///day_29Properties pros = new Properties();try {ClassLoader classLoader = getClass().getClassLoader();InputStream is = classLoader.getResourceAsStream("jdbc.properties");System.out.println("1. " +  is);pros.load(is);System.out.println(pros.getProperty("name"));  } catch (Exception e) {e.printStackTrace();}pros = new Properties();try {InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");System.out.println("2. " + is2);pros.load(is2);System.out.println(pros.getProperty("name"));  } catch (Exception e) {e.printStackTrace();}String picPath = servletContext.getRealPath("/WEB-INF/lib");System.out.println("picPath"+picPath);//picPathD:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\day_29\WEB-INF\lib
}@Overridepublic void service(ServletRequest arg0, ServletResponse arg1)throws ServletException, IOException {System.out.println("service");}}

HelloServlet

package com.atguigu.javaweb;import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;public class LoginServlet implements Servlet{@Overridepublic void destroy() {// TODO Auto-generated method stubSystem.out.println("loginservlet destory");}@Overridepublic ServletConfig getServletConfig() {// TODO Auto-generated method stubreturn null;}@Overridepublic String getServletInfo() {// TODO Auto-generated method stubreturn null;}@Overridepublic void init(ServletConfig arg0) throws ServletException {// TODO Auto-generated method stubSystem.out.println("loginservlet  init");}@Overridepublic void service(ServletRequest request, ServletResponse response)throws ServletException, IOException {System.out.println("请求来了...");//org.apache.catalina.connector.RequestFacade@7a2308c3
        System.out.println(request); String user = request.getParameter("user");String password = request.getParameter("password");//zhouwuji, 123456System.out.println(user + ", " + password); //gameString interesting = request.getParameter("interesting");System.out.println(interesting); /*-->game-->party-->shopping*/String [] interestings = request.getParameterValues("interesting");for(String interest: interestings){System.out.println("-->" + interest);}/*    ^^user: zhouwuji^^password: 123456^^interesting: game*/Enumeration<String> names = request.getParameterNames();while(names.hasMoreElements()){String name = names.nextElement();String val = request.getParameter(name);System.out.println("^^" + name + ": " + val);}/*  **user:[zhouwuji]**password:[123456]**interesting:[game, party, shopping]*/Map<String, String[]> map = request.getParameterMap();for(Map.Entry<String, String[]> entry: map.entrySet()){System.out.println("**" + entry.getKey() + ":" + Arrays.asList(entry.getValue()));  }HttpServletRequest httpServletRequest = (HttpServletRequest) request;String requestURI = httpServletRequest.getRequestURI();///day_29/login
        System.out.println(requestURI);//POSTString method = httpServletRequest.getMethod();System.out.println(method); //    nullString queryString = httpServletRequest.getQueryString();System.out.println(queryString); //   /loginString servletPath = httpServletRequest.getServletPath();System.out.println(servletPath); //告诉浏览器这是一个下载文本response.setContentType("application/msword");PrintWriter out = response.getWriter();out.println("helloworld...");}}

LoginServlet

package com.atguigu.javaweb;public class Person {public String getInfo(){return "helloworld";}}

Person

package com.atguigu.javaweb;import java.io.IOException;import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class SecondServlet implements Servlet{@Overridepublic void destroy() {// TODO Auto-generated method stubSystem.out.println("SecondServlet  destroy ");}@Overridepublic ServletConfig getServletConfig() {// TODO Auto-generated method stubreturn null;}@Overridepublic String getServletInfo() {// TODO Auto-generated method stubreturn null;}@Overridepublic void init(ServletConfig arg0) throws ServletException {System.out.println("second Servlet  init");}@Overridepublic void service(ServletRequest arg0, ServletResponse arg1)throws ServletException, IOException {// TODO Auto-generated method stubSystem.out.println("second service");String person=new Person().getInfo();HttpServletRequest request=(HttpServletRequest)arg0;HttpServletResponse response=(HttpServletResponse)arg1;request.setAttribute("person", person);request.getRequestDispatcher("/hello.jsp").forward(request, response);;} }

SecondServlet

name=atguigu

jdbc.properties

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><!-- 配置当前 WEB 应用的初始化参数 --><context-param><param-name>driver</param-name><param-value>com.mysql.jdbc.Driver</param-value></context-param><context-param><param-name>jdbcUrl</param-name><param-value>jdbc:mysql:///atguigu</param-value></context-param><!-- 配置和映射 Servlet --><servlet><servlet-name>loginServlet</servlet-name><servlet-class> com.atguigu.javaweb.LoginServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>loginServlet</servlet-name><url-pattern>/login</url-pattern>    </servlet-mapping><servlet><!-- Servlet 注册的名字 --><servlet-name>helloServlet</servlet-name><!-- Servlet 的全类名 --><servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class><!-- 配置 Serlvet 的初始化参数 --><init-param><!-- 参数名 --><param-name>user</param-name><!-- 参数值 --><param-value>root</param-value></init-param><init-param><param-name>password</param-name><param-value>1230</param-value></init-param><!-- 可以指定 Servlet 被创建的时机 --><load-on-startup>3</load-on-startup></servlet><servlet-mapping><!-- 需要和某一个 servlet 节点的 serlvet-name 子节点的文本节点一致 --><servlet-name>helloServlet</servlet-name><!-- 映射具体的访问路径: / 代表当前 WEB 应用的根目录. --><url-pattern>/hello</url-pattern></servlet-mapping><servlet-mapping><!-- 需要和某一个 servlet 节点的 serlvet-name 子节点的文本节点一致 --><servlet-name>helloServlet</servlet-name><!-- 映射具体的访问路径: / 代表当前 WEB 应用的根目录. --><url-pattern>/hello2</url-pattern></servlet-mapping><servlet><!-- Servlet 注册的名字 --><servlet-name>secondServlet</servlet-name><!-- Servlet 的全类名 --><servlet-class>com.atguigu.javaweb.SecondServlet</servlet-class><!-- 可以指定 Servlet 被创建的时机 里面是数组 --><load-on-startup>2</load-on-startup></servlet><servlet-mapping><servlet-name>secondServlet</servlet-name><url-pattern>/second</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

web.xml

<%@page import="com.atguigu.javaweb.Person"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><%=request.getAttribute("person") %>wer
</body>
</html>

hello.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>this is a first page
</body>
</html>

index.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><form action="login" method="post">user: <input type="text" name="user"/>password: <input type="password" name="password"/><br><br>interesting:<input type="checkbox" name="interesting" value="reading"/>Reading<input type="checkbox" name="interesting" value="game"/>Game<input type="checkbox" name="interesting" value="party"/>Party<input type="checkbox" name="interesting" value="shopping"/>Shopping<input type="checkbox" name="interesting" value="sport"/>Sport<input type="checkbox" name="interesting" value="tv"/>TV<input type="submit" value="Submit"/></form></body>
</html>

login.html

转载于:https://www.cnblogs.com/ou-pc/p/8150099.html

java web--servlet(2)相关推荐

  1. 初学Java Web——Servlet(一)

    1. Servlet 1.1 静态网页和动态网页 如果浏览器在不同时刻访问Web服务器所获得的页面内容(源文件)可以发生变化,那么这个页面就称之为动态网页.我们参考以下代码: <html> ...

  2. Java Web Start(Jnlp)教程

    这是关于SUN的Java Web Start的简要说明 " Java Web Start是一种通过标准Web服务器交付程序的机制. 通常将这些程序通过浏览器启动,然后将它们部署到客户端并在浏 ...

  3. Java基础——Servlet(六)分页相关

    前面写了Servlet(一)到(五),主要是在网上搜罗的视频.对分页这块还是不太清楚.于是有找到一些视频,重新学习了一下.主要是对分页的认识和设计思路.也是为了方便我以后回忆一下.. 一.分页常识 p ...

  4. Java web学习(一)Servlet简介

    Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间 ...

  5. 云服务器(uCloud)部署java web项目(二) 安装,配置apache服务器

    自己组建了一个网站,想要发布到互联网上.然后我就找到了这个链接 https://www.codecasts.com/series/deploy-a-website-from-scratch(是一个从零 ...

  6. Java Web视频(2013)

    之前在优酷网上放了一些Java Web视频,原本只是想让自己的学生课后复习使用,结果很多人对这个比较感兴趣. 去年上课的时候又录制了一份,和之前的风格不一样,更偏重操作.这段时间有不少同学问我要,为了 ...

  7. Java Web学习(一)Web基础

    本文借鉴:孤傲苍狼(特此感谢!) 一.基本概念 web资源 Internet上供外界访问的Web资源分为两种: 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变. 动态we ...

  8. eclipse maven插件创建java web项目(2)

    为什么80%的码农都做不了架构师?>>>    好了.马不停蹄,再来一篇使用骨架创建maven web项目的方法,大神就不要看了,小白快来学习吧 开始, 1>创建maven项目 ...

  9. java web开发(一) Java Web开发框架对比

    java web 非本人研究方向,只是作为拓展知识涉猎范围  原文链接:http://www.importnew.com/7957.html Web框架有点像酸酵母,你要么喜欢它,要么讨厌它!什么?你 ...

  10. java web开发(二) 8款必备的免费移动Web开发框架(HTML5/JS)

    java web 非本人研究方向,只是作为拓展知识涉猎范围    原文链接  https://www.evget.com/article/2014/3/5/20614.html NO.1 jQuery ...

最新文章

  1. nginx虚拟目录设置 alias 和 root
  2. 用jarsigner对android apk进行签名
  3. linux 文件 重命名 缓存,linux – rename()原子性和NFS?
  4. 前后端分离重复提交_java+react前后端分离项目处理重复提交问题
  5. 解决 IDEA 中src下xml等资源文件无法读取的问题
  6. 02-windows下elasticsearch安装elasticsearch-head
  7. 火星人谚语系列之三:正确的答案一定简单
  8. bert模型可以做文本主题识别吗_BERT模型可以使用无监督的方法做文本相似度任务吗?...
  9. 2019年阿里最新java编程规范-在线版
  10. 【机器学习】支持向量机原理及例题详解
  11. linux鼠标手势,Linux 系统中全能的鼠标手势——Easystroke.docx
  12. 性能测试入门指南 (慎入: 6000 字长文)
  13. 联想笔记本显卡驱动正常音箱没声音但插耳机有声音?驱动人生提供解决方案
  14. ABS系统类最新发表的论文趋势怎么看?
  15. untiy下连接photon
  16. 失恋后同学对我的劝告。。。。表谢意
  17. 有效年利率和年化百分比利率
  18. 宝塔面板网页访问不了
  19. sqlplus连接数据库的几种方法
  20. 数据分析师的就业前景和薪资待遇如何?

热门文章

  1. 自定义CSS博客皮肤
  2. 基于经验的SOA成功原则
  3. 浅谈自考学习方法(二)
  4. 【转】深入浅出REST
  5. 图解Silverlight 3的7个新功能
  6. git 修改全局配置
  7. 中兴智能视觉大数据公交车专用道移动智能电子警察系统功能、特点及优势详细介绍...
  8. 「镁客·请讲」摩簦伞易新宇:对共享雨伞的不同理解,让他们玩法也和他人不同...
  9. Centos 安装 NodeJS
  10. 体系文件管理解决方案