一、首先用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. android通过HttpClient与服务器JSON交互

    通过昨天对HttpClient的学习,今天封装了HttpClient类 代码如下: package com.tp.soft.util; import java.io.BufferedReader; i ...

  2. Oracle_下载地址

    1.http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 1.1.现在(20161 ...

  3. Android Tips – 填坑手册

    出于: androidChina   http://www.androidchina.net/3595.html 学习 Android 至今,大大小小的坑没少踩,庆幸的是,在强大的搜索引擎与无私奉献的 ...

  4. (转) linux之sort用法

    sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序. 参 数 ...

  5. php支付宝在线支付接口开发教程【转】

    php支付宝在线支付接口开发教程 这篇文章主要为大家详细介绍了php支付宝在线支付接口开发教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下   1.什么是第三方支付 所谓第三方支付,就是一些和各 ...

  6. vue学习笔记之属性和方法

    每个Vue都会代理其data对象里所有的属性:只有这些被代理的属性是响应的.如果在实例创建之后添加新的属性到实例上,它不会触发视图更新.例子: <script type="text/j ...

  7. App_GlobalResources.afvubzdv.resources.dll”--“拒绝访问。“

    在使用ArcGIS Viewer for Silverlight创建应用程序的时候有时会出现编译错误 前面的忘了  最后是App_GlobalResources.afvubzdv.resources. ...

  8. VUE应用的一些感受

    方便,数据绑定太方便了. 一个组件一个.vue文件特别清晰. 讲真vue比angular好学多了. webpack打包最近看懂,通过一个主文件把require的文件都打进来.业务代码放build里,引 ...

  9. linux下使用shell查看apache IP访问量

    1.查看TCP连接状态 netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn netstat -n | awk '/^tcp/ {++S[$NF]} ...

  10. 支持GPS的核心API

    Android为GPS功能支持专门提供了一个LocationManager类,它的作用于TelephonyManager.AudioManager等服务类的作用相似,所有GPS定位相关的服务.对象都将 ...