实习笔记(一)

目录

一、在Tomcat中,部署Web项目

1,创建一个文件夹,根目录为test,子目录必须有WEB-INF,它是web项目中的核心目录,客户端浏览器是无法直接访问该目录下的资源

2,WEB-INF的子目录必须有classes,classes用来存放编译好的class文件

3,WEB-INF的子目录下还必须有web.xml,它是web项目中核心的配置文件,tomcat启动后会自动读取项目中web.xml文件

 4,将test文件夹剪切粘贴到Tomcat中的webapps目录中

 5,访问Test文件

二、利用sts工具连接tomcat,部署web项目

1,连接tomcat

2,在sts上部署web项目

三、文件源码的编写规范

1、实现接口

2、请求方法Get与Post

3,html的编辑

4,接收参数与解决参数乱码


一、在Tomcat中,部署Web项目

1,创建一个文件夹,根目录为test,子目录必须有WEB-INF,它是web项目中的核心目录,客户端浏览器是无法直接访问该目录下的资源

      在test文件夹下,新建一个txt文件,输入

<!DOCTYPE html>
<html>
    <head>
       <meta charset="UTF-8">
       <title>index</title>
   </head>
   <body>
       <h1>hello world</h1>
   </body>
</html>

然后将txt文件重命名为:index.html

2,WEB-INF的子目录必须有classes,classes用来存放编译好的class文件

      创建一个JAVA文件,命名为HelloWorld.java:

package com.briup.test;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException
   {
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      out.println("<html>");
      out.println("<head>");
      out.println("<title>index</title>");
      out.println("</head>");
      out.println("<body>");
      out.println("<h1>Hello World! briup</h1>");
      out.println("</body>");
      out.println("</html>");
   }
}

java文件无法直接引用,需要用javac命令编译成类文件,编译命令为:

javac -cp D:\apache\apache-tomcat-8.5.58\lib\servlet-api.jar -d . HelloWorld.java
#因为使用到了servlet规范,需要用到servlet-api.jar,此jar包在tomcat中lib里面中,所以在编译的
时候,需要指定jar所在的路径

这里有个细小的点,因为创建java地址是在桌面,所以在使用cmd命令时,先将地址转为桌面

cd Desktop

运行结果是桌面出现一个com文件夹 ,将com文件夹剪切到classes文件夹中。

3,WEB-INF的子目录下还必须有web.xml,它是web项目中核心的配置文件,tomcat启动后会自动读取项目中web.xml文件

    在WEB-INF文件夹里创建一个txt文件,写入代码后重命名为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>hello</servlet-name>
      <servlet-class>com.briup.test.HelloWorld</servlet-class>
   </servlet>

   <!-- 当前浏览器访问web-test项目中的动态资源/hello-world的时候-->
   <!-- tomcat会自动帮我们调用com.briup.test.HelloWorld中的方法来进行处理-->
   <servlet-mapping>
     <servlet-name>hello</servlet-name>
     <url-pattern>/hello-world</url-pattern>
   </servlet-mapping>


   <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>

</web-app>

 4,将test文件夹剪切粘贴到Tomcat中的webapps目录中

 5,访问Test文件

 访问之前要启动Tomcat,启动方法是双击Tomcat文件夹下bin文件夹里的startup.bat

Tomcat的访问格式为:

http://localhost:8989/your_project/resource_in_project
或为:
http://127.0.0.1:8989/your_project/resource_in_project

 先访问web-test项目中的静态资源: http://127.0.0.1:8989/web-test/index.html

 再访问web-test项目中的动态资源:http://127.0.0.1:8989/web-test/hello-world

二、利用sts工具连接tomcat,部署web项目

1,连接tomcat

配置步骤:sts:windows/preferences/server/runtime environments,添加tomcat的文件地址就可以了

2,在sts上部署web项目

 File新建项目,选其他,选择web文件下的,Dynamic  Web Project,web项目就会创建成功。

创建结果如图:

 有两个必须要有的文件:在Java Resources文件夹下的src包里,创建一个类(Class文件)用来编写动态资源的源码,在WebContent文件夹下创建Html文件,用来存放静态资源源码。编辑好源码后将这个Web项目添加到服务器后,就算是部署成功了,如图:


 有一个小的知识点是,映射路径配置的两种方式,在web.xml中配置或者利用注解配置,两种方法不要同时用,否则服务器会不识别,这里记录一下利用注解配置的方法,在class文件中的类名上一行@WebServlet(“/路径名”),记不住单词用alt+/提示

三、文件源码的编写规范

1、实现接口

Servlet技术可以扩展服务器端的功能,让java代码在服务器端也能成为一种资源(动态资源),javax.servlet.Servlet它是Servlet技术的核心接口,所有的Servlet程序,都必须是该接口的实现类。如果要实现接口,用implements关键字,如果要使用抽象类来实现接口,就用extends关键字。这里只记录HttpServlet方法,它是个抽象类,应当用extends关键字,使用方法为:

public class Say extends HttpServlet {
}
//类名为Say,继承HttpServlet抽象类

2、请求方法Get与Post

Get:是浏览器从服务器获取数据

Post:是服务器从浏览器获取数据

//在继承HttpServlet的情况下:


//Get方式,输入doget,alt+/提示即可自动填补出以下
    @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
	}
//Post方式,输入dopost,自动补充即可出现以下
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
	}

3,html的编辑

     <form action="Hello";method="post">
             用户名:<input type="text" name="name"><br>
        <input type="submit" value="提交">    
     
     </form>

拿上方代码举例,在body中添加form,索引名为:“Hello”,方法是“post”方法,所以其对应的类的方法也应该为post方法,在form中的功能语句为中间两行:

翻译一下:用户名:,输入类型为text,变量名是name,换行,输入类型是submit,值为“提交”

4,接收参数与解决参数乱码

接收请求中单一的参数值的时候,也就是一个参数名对应一个值,使用 getParameter 方法即可,如:/param?name=tom&age=20

接收一个参数名对应多个值,例如页面中的多选框,此时可以使用 getParameterValues 方法,如:/param?like=0&like=1

在一些特殊情况下,需要获取请求中携带的所有参数名,此时可以使用 getParameterNames 方法
如:/param?name=tom&age=20&like=0&like=1 

servlet中将获取的参数写回给浏览器的时候,避免乱码的方法:

//设置响应中的编码为UTF-8
resp.setCharacterEncoding("UTF-8");
//告诉浏览器当前响应中的内容的类型,和内容的编码为UTF-8
resp.setContentType("text/plain;charset=UTF-8");

 下面是一个在页面输出的例子:

@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		//利用req对象,获取到用户写到程序框里的内容,用“一个”字符串来表示参数name的值
		String name = req.getParameter("name");
		
		//设置响应内容的格式和字符编码
		resp.setContentType("text/plain; charset=UTF-8");
		//通过响应对象,获取输出流
		PrintWriter out = resp.getWriter();
		out.print("你好!"+name);
	}

如果要将浏览器的参数输出到服务器,避免乱码,只需要加上一句(这里指的在post方法中)

req.setCharacterEncoding("UTF-8");

下面是个例子:

@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  
		req.setCharacterEncoding("UTF-8");
		String name = req.getParameter("name");
		System.out.print("我的名字是  "+name);
	}

四、

1、跳转

也称之为,服务器内部跳转

其本质是,在servlet接收到一个请求的时候,可以将此请求转发给服务器内部的另一个资源中,如果这
个资源是一个html页面,那么tomcat就会自动读取这个html页面并写回给浏览器。不仅可以从一个Servlet跳转到一个html页面中,也可以从一个Servlet跳转到另一个Servlet中

package com.briup.test;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("Forword")
public class Forword extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//下面三行是为了避免乱码
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html;charset=utf-8");
		
		//path表示要返回的地址
		String path = "/index.html";
		//根据指定的地址,获取请求发展对象
		RequestDispatcher dispatcher = req.getRequestDispatcher(path);
		//使用请求转发对象,把请求对象和响应对象转发给服务器内部的另一个资源
		dispatcher.forward(req, resp);
	}
	

}

其实就是把请求request和响应response转发到下一个资源中,所以在整个过程中,使用的是同一个request和response 

 

2、重定向 

也称之为,客户端重定向
其本质是,客户端浏览器发送第一次请求,访问servlet获取资源,但是服务器中,已经将资源转移到另一个位置了,所以需要通知客户端浏览器,重新发送第二次请求,访问一个新的资源位置。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值