一、首先用Myeclipse2015创建一个web项目,然后修改index.jsp.

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>我的JSP开始页面</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">
</head> <body>
<form action="reg" method="get">
<table border="0">
<tr><td colspan="2">添加用户信息</td></tr>
<tr><td>姓名:</td><td><input type="text" name="name" value="张道陵"></td></tr>
<tr><td>性别:</td><td><input type="text" name="sex" value="男"></td></tr>
<tr><td>年龄:</td><td><input type="text" name="age" value="99"></td></tr>
<tr><td>信息:</td><td><input type="text" name="info" value="五斗米道教主"></td></tr>
<tr><td colspan="2"><input type="submit" value="确认"></td></tr>
</table>
</form><br>
</body>
</html>

主要关注表单。其中有默认的value,是为了测试方便。

二、创建Servlet文件reg.java,覆写其中的doGet和doPost方法。

 package com.kaly.servlet;

 import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class reg extends HttpServlet {
private static final long serialVersionUID = 1L; //无参构造函数
public reg() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//这两句解决中文乱码的问题,在用PrintWriter输出是正常的,请求转发的时候不正常。与Filter冲突,所以不能有过滤器。
request.setCharacterEncoding("utf-8");
response.setContentType("text/html);charset=utf-8");
String usernameString=request.getParameter("name");
String sexString=request.getParameter("sex");
String ageString=request.getParameter("age");
String infoString=request.getParameter("info");
PrintWriter out=response.getWriter();
out.print("<html><head><title>调用servlet</title></head><body>");
out.print(usernameString+","+sexString+","+ageString+","+infoString+".");
out.print("</body></html>");
out.flush();
out.close(); //下面这些信息,通过请求转发传递之后中文显示乱码。设置过字符集和过滤器都不起作用。
// request.setAttribute("username", usernameString);
// request.setAttribute("sex", sexString);
// request.setAttribute("age", ageString);
// request.setAttribute("info", infoString);
//如果上面往输出流写了东西,这里请求转发就会出现异常
// request.getRequestDispatcher("/index.jsp").forward(request, response);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);//在doGet和doPost任何一个方法中加上对另一个方法的调用,就可以具备处理两种提交方法的功能
}
}

其中被注释掉的是调试失败的代码,主要问题是没有处理好中文乱码的问题。而且,如果已经使用了PrintWriter对象向输出流写入了内容,在使用注释掉的那部分代码实现请求转发就会出现“java.lang.IllegalStateException: Cannot forward after response has been committed”的异常。

三、在web.xml中注册servlet,如果是用新建servlet建立的servlet,则Myeclipse会自动建立好相关的注册和映射信息。如果是自定义了一个继承了Servlet的类,则需要手动添加相关信息。

添加下面代码段,其中<servlet-name>节点指定servlet类的引用名称,这个名称将在前端表单action中使用,<servlet-class>节点指定servlet完整的类名。

 <servlet>
<servlet-name>reg</servlet-name>
<display-name>reg</display-name>
<description></description>
<servlet-class>com.kaly.servlet.reg</servlet-class>
</servlet>

添加下面代码段,其中<servlet-name>节点是servlet类的引用名称,必须和上面的<servlet-name>节点的值保持一致,<url-pattern>节点指定servlet映射的相对路径,一般在前面都有个"/"。

 <servlet-mapping>
<servlet-name>reg</servlet-name>
<url-pattern>/reg</url-pattern>
</servlet-mapping>

运行结果如下:

点击"确认"按钮之后。

还没有解决请求转发过程中中文乱码的问题。

Servlet基本模式的更多相关文章

  1. Struts2技术内幕 读书笔记二 web开发的基本模式

    最佳实践 在讨论基本模式之前,我们先说说一个词:最佳实践 任何程序的编写都得遵循一个特定的规范.这种规范有约定俗称的例如:包名全小写,类名每个单词第一个字母大写等等等等;另外还有一些需要我们严格遵守的 ...

  2. servlet文件下载

    创建web工程servlet,新建DownloadServlet.java package com.xmyself.servlet; import java.io.File; import java. ...

  3. java中servlet的各种路径

    1. web.xml中<url-pattern>路径,(叫它Servlet路径!) > 要么以“*”开关,要么为“/”开头 2. 转发和包含路径 > *****以“/”开头:相 ...

  4. Servlet监听器笔记总结

    监听器Listener的概念 监听器的概念很好理解,顾名思义,就是监视目标动作或状态的变化,目标一旦状态发生变化或者有动作,则立马做出反应. Servlet中的也有实现监听器的机制,就是Listene ...

  5. JavaWeb——Servlet

    一.基本概念 Servlet是运行在Web服务器上的小程序,通过http协议和客户端进行交互. 这里的客户端一般为浏览器,发送http请求(request)给服务器(如Tomcat).服务器接收到请求 ...

  6. servlet 简介,待完善

    什么是Servlet?① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--javax. ...

  7. java web学习总结(五) -------------------servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  8. servlet使用入门

    创建web工程servlet,然后新建TestServlet.java package com.xmyself.servlet; import java.io.IOException; import ...

  9. 基于jsp+servlet图书管理系统之后台万能模板

    前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...

随机推荐

  1. sql语句中left join、inner join中的on与where的区别

    table a(id, type): id     type ---------------------------------- 1      1 2      1 3      2 table b ...

  2. 页面加载后resize页面布局

    在我们写web的时候,有的时候页面加载完以后,布局位置有一些问题,手动改变窗口大小后则正常显示位置. 其实,我们手动改变窗口大小,是执行了resize方法. share一下兼容方法: coffee c ...

  3. iOS开发 ReactiveCocoa入门教程 第二部分

    ReactiveCocoa 是一个框架,它允许你在你的iOS程序中使用函数响应式(FRP)技术.加上第一部分的讲解,你将会学会如何使用信号量(对事件发出数据流)如何替代标准的动作和事件处理逻辑.你也会 ...

  4. 用cxf开发restful风格的WebService

    我们都知道cxf还可以开发restful风格的webService,下面是利用maven+spring4+cxf搭建webService服务端和客户端Demo 1.pom.xml <projec ...

  5. HTML问题,a href =" "和 a href ="#"这两个有什么区别?

    a href ="" 默认打开的还是当前页面,会刷新一下重新打开.a href ="#" 浏览器地址栏网址后面会多显示1个#.不会刷新页面,会回到页面顶部.

  6. jQuery 获取checkbox 获取值

    //全选 $("[name='checkbox']").attr("checked",'true'); //取消全选 $("[name='checkb ...

  7. C#窗体 WinForm 对话框,流

    一.对话框 ColorDialog:颜色选择控件 private void button1_Click(object sender, EventArgs e) { //显示颜色选择器 colorDia ...

  8. windows下安装mysql解压版

    1.解压压缩版的MySQL 其中: bin目录        -    主要存放MySQL的各种可执行程序 data目录      -   存放数据库的数据文件和索引文件等 MySQL-test -  ...

  9. [强连通分量] POJ 1236 Network of Schools

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16803   Accepted: 66 ...

  10. UISlider

    UISlider是iOS中的滑块控件 通常⽤于控制视频播放进度,控制⾳量等. 它继承于UIControl,滑块提供了⼀系列连续的值,滑块停 在不同的位置,获取到滑块上的值也不同.   minimumV ...