(二)用户相关操作

一、导入jar包

见  http://pan.baidu.com/s/1dE9kMJZ

 

 

 二、导入c3p0并修改值

c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/store
c3p0.user=root
c3p0.password=123456

三、导入工具类

见 http://pan.baidu.com/s/1miutJXe

有关这些工具类的分析请转向http://www.cnblogs.com/Michael2397/p/7633395.html

四、通用servet

1、我们可以直接重写service方法即可,在service方法中写上面的判断代码即可

以前 
只定义一个Userservlet重写doget和dopost例如添加用户的时候以前:
/store/addUser现在: /store/user?method=add修改用户的时候以前: /store/updateUser现在: /store/user?method=update 初步改进 在userservlet中doget方法中Stirng m=request.getParameter("method");if("add".equals(m)){add(HttpServletRequest,HttpServletResponse)}else if("update".equals(m)){update(HttpServletRequest,HttpServletResponse)}else if(){}
最终改进:
1、BaseServlet extends HttpServlet{}
 
2、在baseservlet中重写service方法1.获取请求的方法2.找到相应的子类 父类中的this代表的是子类Class clazz=this.getClass()3.子类调用方法通过方法名称 获取一个指定的方法 Method m=clazz.getMethod(方法名,HttpServletRequest.class,HttpServletResponse.class)方法执行m.invoke(this,HttpServletRequest,HttpServletResponse);
 
3、其他的servlet继承baseServlet
 

2、请求转发 重定向 打印数据改进

以前
  
在servlet中 我们执行方法之后无非 请求转发 重定向 打印数据 请求转发 reuqest.getRequestDispatcher().forward()最终改进
继续完善我们baseservlet中service: 在第3步,方法执行返回值,现在我让所有的方法都返回一个字符串 add update字符串代表的是请求转发的路径若该方法不转发只需要返回一个nullString s
=(String)m.invoke(this,HttpServletRequest,HttpServletResponse);if(s!=null){reuqest.getRequestDispatcher(s).forward(...);}

五、创建通用servlet

BaseServlet只需要重写service即可

1、新建Baseservlet

package com.louis.web.servlet;import java.io.IOException;
import java.lang.reflect.Method;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 通用servlet*/
@WebServlet("/base")
public class BaseServlet extends HttpServlet {@Overridepublic  void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try {//1获取子类,创建子类或调用子类的时候,this代表的是子类对象Class clazz = this.getClass();//2获取请求方法String m = request.getParameter("method");//3获取方法对象Method method = clazz.getDeclaredMethod(m, HttpServletRequest.class,HttpServletResponse.class);//4让方法执行,返回值为请求转发的路径String s = (String)method.invoke(this, request,response);   //相当于 userservlet.add(request,response)//5判断s是否为空if(s!=null) {request.getRequestDispatcher(s).forward(request, response);}} catch (Exception e) {// TODO Auto-generated catch block
            e.printStackTrace();throw new RuntimeException();} }}

2、配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><servlet><description></description><display-name>BaseServlet</display-name><servlet-name>BaseServlet</servlet-name><servlet-class>com.louis.web.servlet.BaseServlet</servlet-class></servlet><servlet-mapping><servlet-name>BaseServlet</servlet-name><url-pattern>/base</url-pattern></servlet-mapping>

<error-page> //配置错误页面<error-code>500</error-code><location>/500.jsp</location></error-page><error-page><error-code>404</error-code><location>/404.jsp</location></error-page></web-app>

3、添加500.jsp,404.jsp

 六、创建UserServlet

1、编写UserServlet

package com.louis.web.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 和用户相关的servlet*/public class UserServlet extends BaseServlet {public String add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("userServlet的add方法执行了");return null;}}

2、配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><servlet><description></description><display-name>BaseServlet</display-name><servlet-name>BaseServlet</servlet-name><servlet-class>com.louis.web.servlet.BaseServlet</servlet-class></servlet><servlet-mapping><servlet-name>BaseServlet</servlet-name><url-pattern>/base</url-pattern></servlet-mapping> <servlet><description></description><display-name>UserServlet</display-name><servlet-name>UserServlet</servlet-name><servlet-class>com.louis.web.servlet.UserServlet</servlet-class></servlet><servlet-mapping><servlet-name>UserServlet</servlet-name><url-pattern>/user</url-pattern></servlet-mapping><error-page><error-code>500</error-code><location>/500.jsp</location></error-page><error-page><error-code>404</error-code><location>/404.jsp</location></error-page>
</web-app>

3、在浏览器上验证http://localhost:8080/store/user?method=add

 

user:通过web.xml得到执行的是userServlet
method=add:因为userServlet是继承baseServlet,所以要先经过baseServlet,通过反射执行this.add方法(this指的是子类)

 

 

 

 

 

问题

问题1

解决:参考http://www.cnblogs.com/vivizhang/p/vivizhang.html

    因为eclipse默认添加的@WebServlet("/ServletDemo")与web.xml中的冲突,删掉其中一个

2、this关键字在继承中的使用

  参考:http://www.cnblogs.com/Michael2397/p/7633932.html

3、web.xml配置

  参考:http://www.cnblogs.com/hxsyl/p/3435412.html

4、request.getRequestDispatcher().forward(request,response)和response.sendRedirect()的区别

  参考:http://blog.csdn.net/uk8692/article/details/12865571

 

转载于:https://www.cnblogs.com/Michael2397/p/7633847.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你以为美国商业航天那么牛只是因为马斯克?更多原因在这里!

来源&#xff1a;银河航天漫游指南2020年5月31日&#xff0c;SpaceX的载人龙飞船成功将两位宇航员成功送往国际空间站&#xff0c;成为有史以来第一家将人类送入太空轨道的私营企业。美国商业航天领域的进展有目共睹。载人龙飞船起飞瞬间这次成功发射打破了传统航天领域以国家力…

java游戏应龙女魃转世_应龙和女魃的凄美爱情,究竟是爱情,还是阴谋?

人世间最痛苦的事情是什么&#xff1f;有人说是生老病死&#xff0c;也有人说是爱憎别离。对于她来说&#xff0c;或许最痛苦的是他的欺骗与背叛……女魃一、初见北荒往东二百里&#xff0c;有一座山&#xff0c;名唤玲珑山。山中住着一名神女&#xff0c;名为女魃。相传&#…

热点|因为AI不是人,美国专利局拒绝认定TA的所有发明权

来源&#xff1a;量子位「你不是人&#xff01;」——美国专利局&#xff08;USPTO&#xff09;。这句话是美国专利局&#xff0c;对所有人工智能说的。4月27日&#xff0c;美国专利局出台一项规定&#xff1a;对于任何由人工智能独立设计发明的产品&#xff0c;因为AI不是自然…

登陆界面代码

1、设计思想 添加窗口界面&#xff0c;想i面添加一系列组件。 输入账号密码和验证码后&#xff0c;如果验证码正确&#xff0c;进行注册&#xff0c;否则注册失败。注册成功后&#xff0c;验证码自动刷新&#xff0c;并将注册的帐号和密码保存。注册失败后&#xff0c;验证码刷…

为何苹果为何苹果甘愿冒险自主研发芯片?

来源&#xff1a;内容来自「腾讯科技」7月4日&#xff0c;据外媒报道&#xff0c;苹果不久前宣布将把Mac上使用的处理器从英特尔芯片迁移到自己的Apple Silicon上&#xff0c;尽管这是意料之中的事&#xff0c;但苹果为何甘愿冒险甚至似乎相当渴望进行这种转型的&#xff0c;仍…

用MXNet实现mnist的生成对抗网络(GAN)

用MXNet实现mnist的生成对抗网络(GAN) 生成式对抗网络&#xff08;Generative Adversarial Network&#xff0c;简称GAN&#xff09;由一个生成网络与一个判别网络组成。生成网络从潜在空间&#xff08;latent space&#xff09;中随机采样作为输入&#xff0c;其输出结果需要尽…

java单元格合并多列_ElementUI表格列相同值自动合并单元格( 多列 )

上篇文章写了如何在处理单列相同数据时让相同的项进行自动合并, 如果有多列合并的需求我们也应该可以从容应对...(产品: 你们看我干嘛?)废话不多说 上代码HTMLJSvar Main {data() {return {tableData6: [{name: 部门1,type: 0,amount1: 跟单员1,amount2: 成衣工厂1,amount3: …

【MIT港科大】最新《贝叶斯深度学习》2020综述论文,35页pdf全面阐述最新进展...

来源&#xff1a;专知来自MIT和香港科技大学的学者最新《贝叶斯深度学习》综述论文&#xff0c;值得关注&#xff01;地址&#xff1a;https://www.zhuanzhi.ai/paper/9b781282204cb581a31aa0e8b570dd95摘要一个综合的人工智能系统不仅需要用不同的感官(如视觉和听觉)感知环境&…

​ 长达35页!美国公布未来新兴科技趋势报告

本文来源&#xff1a;笔记侠未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;云脑技术和企业图…

Linux命令行之逗趣无极限

Reference: http://os.51cto.com/art/201304/390059.htm 【2013年4月18日 51CTO外电头条】你有没有在Linux命令行中见过一辆火车呢&#xff1f;"猫跟老鼠"呢&#xff1f;编辑Linux命令行其实并不总是件严肃古板的事情。你完全可以用它自娱自乐。下面我们就跟大家一起…

java web的友好页面_JavaWeb 之 由 Tomcat 展示友好的错误信息页面

在 JavaWeb 工程中&#xff0c;可能会遇到 404 或 500 的错误页面&#xff0c;也有可能是由于异常显示的空白页面&#xff0c;但是此时并不想把这些页面给用户呈现出来&#xff0c;这时就需要给用户提示一些友好的信息。在部署 JavaWeb 工程时&#xff0c;只需要在 web.xml 中指…

【计算机视觉】计算机视觉入门大全:基础概念、运行原理、应用案例详解

来源&#xff1a;图灵人工智能 「机器能够模拟人类视觉系统」的幻想已经过时了。自 1960 年代第一批学术论文出现以来&#xff0c;计算机视觉已经走了很远&#xff0c;现代系统已经出现&#xff0c;且它们可以集成到移动应用中。今天&#xff0c;由于其广泛应用和巨大潜力&…

对10亿个数据去重java_20 亿个数字在 4G 内存中如何去重排序:快来试一试 BitMap...

有一道流传广泛的面试题&#xff1a;给你一台 4G 内存的机器&#xff0c;一组 20 亿个无序正整数&#xff0c;如何快速地判断一个正整数 N 是否在这组数字中&#xff1f;或者如何快速地对这组数据排重后排序&#xff1f;让我们先算算 20 亿个整数会占用多大的内存空间&#xff…

大佬共话AI:“三马二宏”等亮相2020年世界人工智能大会

&#xff08;视频来源&#xff1a;腾讯视频新民晚报&#xff09;来源 | 数据观综合&#xff08;转载请注明来源&#xff09;编辑 | 蒲蒲7月9日上午&#xff0c;2020世界人工智能大会云端峰会(WAIC)在上海正式开幕&#xff0c;人工智能概念又一次被行业点燃。大会上&#xff0c;…

java远程调试挂起线程_java进程的远程调试

一、jdb调试mqbroker(jvm参数配置)2.利用jdb/idea/eclipse 远程调试&#xff0c;同本地调试一样二、jvisualvm jvm 监视使用jstatd连接nohup $JAVA_HOME/bin/jstatd -p 1099 -J-Djava.security.policy使用jmx连接(需配置jvm启动参数据)由于jvisualvm采器需要使用jmx&#xff0c…

简单图形打印(需求分解)

打印任意高度的实心菱形 菱形的打印是一个相对复杂的需求&#xff0c;我们需要把它分解成为多个简单的需求来完成。 将它看作是两个部分&#xff0c;上面一个三角形&#xff0c;下面一个倒三角形。 再依次实现打印。 代码如下&#xff1a; //打印任意高度的菱形 public class G…

机器人研究员的崛起 |《自然》论文

来源&#xff1a;Nature自然科研根据本周《自然》发表的一篇论文A mobile robotic chemist&#xff0c;汽车装配线上常见的机器人经过改造后&#xff0c;可以在化学实验室内和人类一起工作。该机器人和机器学习算法相连&#xff0c;能够在给定需要检验什么假设的情况下&#xf…

《EE Times》评出2020年全球最值得关注的18家传感器公司

来源&#xff1a;仪商网每年&#xff0c;美国著名电子技术类杂志《EE Times》都会评选出全球值得关注的新创半导体公司排行榜。今年已轮到了第20届&#xff0c;相较以往&#xff0c;最大的变化是这一届的榜单由60家增至100家。在今年的榜单中&#xff0c;保留了上一届中的49家公…

webstorm配置Monokai-Sublime.jar主题

https://github.com/OtaK/jetbrains-monokai-sublime 导入下载的Monokai-Sublime.jar jar包即可使用。 转载于:https://www.cnblogs.com/sirwang/p/7657975.html

用洪小文,人工智能予力永续未来

来源&#xff1a; 微软研究院AI头条 二十一世纪第三个十年的开局时刻有些艰难。当许多人还在为澳大利亚森林大火和席卷东非、西亚的蝗虫灾害而担忧时&#xff0c;一场突如其来的疫情又在全球各国次第爆发&#xff0c;迄今仍未有止息迹象。事实上&#xff0c;被疫情困扰的不仅是…