一、地址

客户端路径和服务端路径

表单:<form action="路径"></form>

超链接:<a href="路径">xxx</a>

图片:<img src="路径"/>

重定向:response.sendRedirect("路径")

请求转发:request.getQuestDispatcher("路径").forward(request,response)

请求包含:request.getQuestDisPatcher("路径").include(request,response);

ServletContext 获取资源的相关方法

servletContext.getRealPath("路径")//根据文件的相对路径获取绝对路径

servletContext.getResourceAsStream("路径")//根据文件的相对路径获取文件的输入流

在web.xml文件中配置的Servlet的访问路径

<url-pattern>路径</url-pattern>

客户端路径:客户端访问服务器资源的时候的路径

1、表单

在程序中的书写方式:http://127.0.0.1:8888/day11/AServlet

服务器主机名/端口号/项目名/资源名

2、超链接

<a href="路径">xxx</a>

3、图片

<img src="/day11/images/stu,jpg"/>

4.重定向

response.sendRedirect("/day11/AServlet");

服务端路径:

1、请求转发

2、请求包含

3、在ServletContext中与资源相关的方法

  servletContext.getRealPath("/WEB-INF/web.xml")//根据文件的相对路径获取绝对路径

4、在web.xml文件中配置的Servlet的访问路径

<url-pattern>/AServlet</url-pattern>

二、编码

从客户端、浏览器向服务器发送请求数据或从服务器向客户端发送响应数据,在底层都是以字节的形式发送的,这就需要将字符数据转换成字节,这个过程叫做编码。

在客户端、浏览器或者服务器端接收到字节数据后,需要把字节组装成字符,这个过程叫做解码。

无论编码和解码都需要用到码表。常用的编码解码方式有GBK gb2312 ISO-8859-1

服务器默认的编码和解码都是ISO-8859-1

产生乱码的根源是编码和解码的方式不一致,只要编码和解码的方式一致就不会产生乱码。

三、请求编码

(1)在页面中发出请求

用户在页面上输入的数据的编码是由页面本身的编码决定的

(2)get请求解码

服务器默认的解码方式为ISO-8859-1 ,不支持中文。

解决乱码需要两步:一是回退为字节数据 二是重新编码

AServlet.java

package cn.edu.aynu.rjxy.servlet;

import java.io.IOException;
import java.util.ArrayList; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class AServlet extends HttpServlet {
/*
* Post请求
*
*/ public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*post请求的解码处理 乱码出现的根源是:编码方式和解码方式不一致。
* tomcat服务器默认的解码方式是ISO-8859-1不支持中文。由于post请求
* 有请求体,请求参数是放在请求体中的,设置请求体的解码方式,需要调用
* 方法request.setCharacterEncoding("UTF-8");支持中文
*/
request.setCharacterEncoding("UTF-8");
//响应输出流的编码方式是UTF-8 客户端、浏览器解码方式也为UTF-8
response.setContentType("text/html;charset=utf-8");
//根据参数名获取参数值
String username = request.getParameter("username");
String sex = request.getParameter("sex");
String select = request.getParameter("select");
//根据参数名获取多个参数值
String[] hobby = request.getParameterValues("hobby");
String experiment = request.getParameter("experiment");
//输入到界面上
response.getWriter().print("姓名:"+username+"<br>");
response.getWriter().print("性别:"+sex+"<br>");
response.getWriter().print("学历:"+select+"<br>");
//创建一个数组用于存放爱好的值
ArrayList hobbies = new ArrayList();
//数组的遍历
for (int i = 0; i < hobby.length; i++) {
hobbies.add(hobby[i]);
}
response.getWriter().print("爱好:"+hobbies+"<br>");
response.getWriter().print("工作经历:"+experiment+"<br>");
} }

a.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'a.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<form action="/day11/AServlet" method="post">
姓名:<input type="text" name="username"><br>
性别:<input type="radio" name="sex" value="male">男
<input type="radio" name="sex" value="female">女<br>
学历:<select name="select">
<option selected="selected" value="college">本科</option>
<option value="junior">大专</option>
<option value="master">硕士</option>
<option value="doctor">博士</option>
</select><br>
爱好:<input type="checkbox" name="hobby" value="sing">唱歌
<input type="checkbox" name="hobby" value="dance">跳舞
<input type="checkbox" name="hobby" value="read">阅读
<input type="checkbox" name="hobby" value="run">跑步<br>
工作经历:<br>
<textarea name="experiment" rows="5" cols="35">请认真写下您的工作经历</textarea><br>
<input type="submit" value="提交">
</form>
</body>
</html>

Java Web总结的更多相关文章

  1. 高效 Java Web 开发框架 JessMA v3.5.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  2. 高效 Java Web 开发框架 JessMA v3.4.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  3. java web 之客户关系管理系统

    这个周末真的是觉得自己学会了一个比较高大上的本领,为什么这么觉得呢?那是因为星期六的时候觉得自己可以看看源码能做出来,可是让我头疼的是花费了一上午的时间还是没有弄出来,还好上天给了我机会,要是没有老师 ...

  4. Java Web中的中文编码

    Java Web开发中经常会遇到中文编码问题,那么为什么需要编码呢?因为人类需要表示的符号太多,无法用1个字节来表示,而计算机中存储信息最小单元为1个字节.所以必须指定char与byte之间的编码规则 ...

  5. java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化

    一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...

  6. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

  7. JAVA WEB WITH IDEA

    本文主要介绍使用IDEA开发环境,创建JAVA WEB 工程,并介绍war包的制作过程. 1 创建MAVEN工程

  8. java WEB开发入门

    WEB开发入门 1 进入web JAVASE:标准- standard   JAVA桌面程序 GUI    SOCKET JAVAEE:企业-浏览器控制  web 2 软件结构 C/S :client ...

  9. Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用

    问题:Jenkins 2.16.3默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的. 如何设置才能让出来呢? 打开&quo ...

  10. 5款强大的Java Web开发工具

    1.WebBuilder这是一款开源的可视化Web应用开发和运行平台.基于浏览器的集成开发环境,采用可视化的设计模式,支持控件的拖拽操作,能轻松完成前后台应用开发:高效.稳定和可扩展的特点,适合复杂企 ...

随机推荐

  1. JAVA基础代码分享--学生成绩管理

    问题描述: 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10  等级为’A’   成绩>=最高分-20  等级为’B’ 成绩>=最高分-30  等级为’C’ ...

  2. ECMAScript5之Array

    在ECMAScript5中对Array新增的些方法,以前没注意的同志们,嘻嘻,下面我们一起来边看边学. 1.Array之isArray(element) 看到isArray,不言而喻,就是判断一个对象 ...

  3. 我的Objective-C系列文章

    做iOS开发有一段时间了,也有自己上线的App产品,也在坚持着发表技术博客总结自己所学的东西.在写博客的时候虽然博文中不免有错别字,但每句话都是在斟酌之后所写的,每篇博客所粘贴的代码都是经过调试运行无 ...

  4. 重温JSP学习笔记--三大指令九大内置对象

    最近在温习javaweb的相关基础知识,鉴于我弄丢了记满了整整一本的笔记,决定以后把笔记和一些学习上的心得以及碰到的一些问题统统都放在网上,今天看了一下jsp的相关基础,以下是笔记: JSP三大指令: ...

  5. Cesium应用篇:2影像服务(上)

    文章中相关范例下载路径:https://yunpan.cn/cByQqkANWN7Pu 访问密码 823d        Cesium中提供了多种ImageryProvider方式,来满足用户的实际需 ...

  6. 通过手动创建统计信息优化sql查询性能案例

    本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息 来源于工作中的一个实际问题, 这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选 ...

  7. 实际案例:在现有代码中通过async/await实现并行

    一项新技术或者一个新特性,只有你用它解决实际问题后,才能真正体会到它的魅力,真正理解它.也期待大家能够多分享解一些解决实际问题的内容. 在我们遭遇“黑色30秒”问题的过程中,切身体会到了异步的巨大作用 ...

  8. Windows下80端口被pid为4的System进程占用解决方法

    前言 之前是Windows 7系统,前段时间装了Windows 10,php环境还没来得及搭建.今天折腾了一下,是用nginx+php,端口是80(已经停止了iis服务),nginx就是起不来,十之八 ...

  9. LINQ to SQL语句(15)之String

    LINQ to SQL支持以下String方法.但是不同的是默认情况下System.String方法区分大小写.而SQL则不区分大小写. 1.字符串串联(String Concatenation) v ...

  10. [Bug]2016-02

    1.0 反序列化时的对象属性类型定义错误. 字符串类型用整型接收.(导致一直反序列化失败.) 2.0 HttpWebRequest myReq = (HttpWebRequest)HttpWebReq ...