how2j.cn

相关下载
文件名 文件大小
j2ee.rar 520k
使用站长秘制下载工具

工具版本兼容问题
通过Servlet 实现增加功能

步骤 1 : 先运行,看到效果,再学习   
步骤 2 : 模仿和排错   
步骤 3 : 准备增加的页面 addHero.html   
步骤 4 : 编写 HeroAddServlet   
步骤 5 : 配置web.xml   
步骤 6 : 测试   

步骤 1 :

先运行,看到效果,再学习

老规矩,先下载右上角的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。
步骤 2 :

模仿和排错

在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。
模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。
采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。

推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。
这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来
这里提供了绿色安装和使用教程:diffmerge 下载和使用教程
步骤 3 :

准备增加的页面 addHero.html

web目录下增加addHero.html

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

表示用UTF-8显示中文,同时浏览器也会使用UTF-8编码提交中文

form:
action设置为addHero路径
method设置为post 也是为了提交中文
准备增加的页面 addHero.html
<!DOCTYPE html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <form action="addHero" method="post"> 名字 : <input type="text" name="name"> <br> 血量 : <input type="text" name="hp"> <br> 伤害: <input type="text" name="damage"> <br> <input type="submit" value="增加 "> </form>
<!DOCTYPE html>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<form action="addHero" method="post">
	 名字 : <input type="text" name="name"> <br>
血量 : <input type="text" name="hp"> <br>
伤害: <input type="text" name="damage"> <br>
		 <input type="submit" value="增加 ">
</form>
步骤 4 :

编写 HeroAddServlet

HeroAddServlet 中根据浏览器传过来的参数,创建一个Hero对象。 接着通过HeroDAO把该对象保存到数据库中。
最后使用客户端跳转到listHero查看所有的Hero,就能看到新加入的Hero对象了

request.setCharacterEncoding("UTF-8");

表示使用UTF-8的方式获取浏览器传过来的中文
编写 HeroAddServlet
package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import bean.Hero; import dao.HeroDAO; public class HeroAddServlet extends HttpServlet { protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); Hero hero = new Hero(); hero.setName(request.getParameter("name")); hero.setHp(Float.parseFloat(request.getParameter("hp"))); hero.setDamage(Integer.parseInt(request.getParameter("damage"))); new HeroDAO().add(hero); response.sendRedirect("/listHero"); } }
步骤 5 :

配置web.xml

在web.xml中设置路径addHero对应HeroAddServlet
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>HelloServlet</servlet-class> <load-on-startup>10</load-on-startup> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>RegisterServlet</servlet-name> <servlet-class>RegisterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RegisterServlet</servlet-name> <url-pattern>/register</url-pattern> </servlet-mapping> <servlet> <servlet-name>HeroListServlet</servlet-name> <servlet-class>servlet.HeroListServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HeroListServlet</servlet-name> <url-pattern>/listHero</url-pattern> </servlet-mapping> <servlet> <servlet-name>HeroAddServlet</servlet-name> <servlet-class>servlet.HeroAddServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HeroAddServlet</servlet-name> <url-pattern>/addHero</url-pattern> </servlet-mapping> </web-app>
步骤 6 :

测试

重启tomcat,访问增加页面

http://127.0.0.1/addHero.html

提交数据,接着客户端跳转到/listHero,就可以显示新增加的这条数据了
测试


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-12-10 页面点提交后,出现 500 错误
OKJR
关于 J2EE-Servlet-增加 的提问



站长,我在.HTML页面点提交后,出现了 实例化servlet类servlet.HeroAddServlet时出错是为什么呢?
package servlet;

import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bean.Hero;
import dao.HeroDAO;

class HeroAddServlet extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
			{
		request.setCharacterEncoding("UTF-8");
		
		Hero hero = new Hero();
		hero.setName(request.getParameter("name"));
		hero.setHp(Float.parseFloat(request.getParameter("hp")));
		//传来的是string型,需要使用Integer.parseInt转换成int型
		hero.setDamage(Integer.parseInt(request.getParameter("damage")));
		
		new HeroDAO().add(hero);
		
		response.sendRedirect(request.getContextPath()+"/listHero");
			}
	
}
HTTP Status 500 - Error instantiating servlet class servlet.HeroAddServlet
type Exception report

message Error instantiating servlet class servlet.HeroAddServlet

description The server encountered an internal error that prevented it from fulfilling this request.

exception






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-11-13 这个web.xml配置中class路径问题
yangrui666
关于 J2EE-Servlet-增加 的提问



为什么写成servlet.AddHeroServlet,而不是直接写AddHeroServlet

							

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-08-31 为什么查询结果是倒序的
2018-05-15 servlet页面跳转问题,尝试了提问的人的方法,都没有办法解决,站长帮帮我
2018-02-09 为什么action的属性写错也能添加到数据库
2018-01-23 关于编码处理问题:charset="UTF-8"中问乱码 但是charset="gb1312"不会
2017-11-20 添加结束后页面跳转的的问题
2017-11-09 关于Serlvet页面跳转的问题
2017-09-28 额,说的是添加 AddHeroServlet,实际是HeroAddServlet
2017-09-04 这里的addHero.html没说放在哪个文件夹啊
2017-08-21 在网页输入网址,html文件显示错误
2017-08-20 AddHero中sql语句写的id为null 运行的时候报错Column 'id' cannot be null 为啥站长的可以呢?
2017-06-29 .id 与 setId()的区别
2017-06-23 最后的listHero是什么?
2017-05-06 j2ee这个项目下载里面的类和页面都不够啊?
2017-03-29 增删减查都写好了,进入addhero.html,出现:java.lang.NullPointerException
2016-10-22 有个问题一直搞不懂




提问之前请登陆
关于 J2EE-Servlet-增加 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 902680467
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图