基于B/S的学生信息管理系统

  1. 创建数据库中的User表以及表数据

  1. 创建项目

默认会为我们选择配置好的tomcat版本,因为我们使用的servlet是一个服务器语言,你要写servlet必须要在服务器中来写,因此必须选择服务器。

版本2.5,相比其他版本多了一个web.xml的配置文件,这个配置文件就是用来配置你写的servlet的

项目的目录结构:

Java表示Java后台代码书写,webcontent表示项目的根目录,也就是路径中项目名后面的/

Web.xml中都是我们索要理解的配置文件。

然后根据要求,下面我们先看看servlet

servlet的概念

全称Java Servlet,是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet运行于支持Java应用的服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

3.2 servlet的工作原理

1)用户(客户端)通过一个URL来请求一个Servlet

2)当用户请求Servlet时,容器构建ServletRequest对象 request和ServletResponse对象response,并传递给Servlet的service()方法,service通过request对象获取到请求的参数,然后,根据参数做出相应的处理,通过response对象来向客户端发送相应内容。

实现交互式的浏览和修改数据,生成动态web内容的过程:

1)客户端发送请求到服务器端

2)服务器将信息发送给servlet

3)Servlet生成响应的内容将其给服务器,响应的内容动态生成的,其实取决于客户端的请求

4)服务器响应返回给客户端

注意:我们现在写的servlet其实就是一个普通类,然后继承了httpservlet

3.3 servlet的生命周期

1)加载类,生命周期开始

2)调用init()方法,进行初始化;Servlet在服务器中只有一个实例,所以只初始化一次

3)执行service()方法(或根据请求的不同调用doGet()/doPost()方法)

4)销毁,调用destroy()方法

3.4 第一个servlet程序

1)新new一个dynamic web project ,然后填写项目名并且选择服务器(因为servlet运行在服务器上面的)选择版本2.5(因为2.5会自动生成一个web.xml的配置文件,3.0版本需要手动选择)

2)在src下面创建包和类(fristServlet),然后继承:      httpservlet(import javax.servlet.http.HttpServlet;),然后重写init方法、destroy()方法、service方法

3)配置web.xml

先配置本地路径:

然后配置网络路径:

我们在浏览器中如果需要访问servlet,我们需要写servlet中对应的映射到路径:

4)运行项目,在浏览器地址中输入http://localhost:8080/ServletXingMu/frist.do这里有个问题就是一开始进入项目报404,因为我们没有设置首页

5)查看控制台的结果

停止服务器查看结果:

常见错误:

如果servlet的网络映射路径一旦写错了,tomcat就启动不起来会报这个问题,显示启动失败。

1.上下名称不一致

2./没有加

注意:一旦修改了web.xml就需要重新启动服务器

说明:/ 表示根目录,也就是http://localhost:8080/Servlet_day01/这 个路径项目名后的/  所以根据配置的映射路径访问名为first的servlet时路径为:http://localhost:8080/Servlet_day01/first.do

 

3.5 Servlet中的doGet()和doPost()方法

Servlet中初始化方法和销毁方法可以不写,运行服务器会自动运行,以后我们只需要写service方法就可以了。Service方法中还有doget和dopost方法,关系:servlce=doget+dopost。

doget方法专门用来处理以get方式发送的请求,dopost方法专门用来处理以post方式发送的请求,当然不管get也好post也好都可以使用service方法。如果我们以get方式发送请求,那么在对应的servlet中会先找doget方法,如果没有才会去找service方法,如果我们以post方式发送请求,那么在对应的servlet中会先找dopost方法,如果没有才会去找service方法;也就是说service方法可以一个顶两。

3.5.1 常用的传输协议方式

HTTP传输协议常用的两种方式:Get和Post;

get方式和post方式统称传输方式,那么如何决定传输方式?

1)在地址栏中直接输入地址是以get方式发送请求的

2)超链接是通过get方式发送的请求

3)表单提交有两种方式:

Get方式提交:是通过get方式发送的请求

Post方式提交:是通过post方式发送的请求

例子:

创建项目JavaEE_day02,注意:选择服务器7.0以及以上和版本号2.5,在webContent下面的wen-inf下面的web.xml配置文件中修改首页为login.html,创建login.html,在页面中填写from表单以及超链接。

在src中创建Java servlet类,类名SecondServlet,继承于httpservlet(import javax.servlet.http.HttpServlet)

重写doget和dopost方法

如果我们需要访问当前的servlet那么我们就需要进行配置,在web.xml中进行配置

进行访问,在地址栏中输入http://localhost:8080/JavaEE_day02/second.do然后在控制台输出得到结果:

说明我们在地址栏中发送请求的发送为get方式。

使用超链接方式,在页面中填写链接地址

注意:超链接的链接路径和表单提交的路径都是相对路径,点击超链接,网址由

http://localhost:8080/JavaEE_day02/变为http://localhost:8080/JavaEE_day02/second.do说明我们正在访问secondservlet这个类。

结果:

说明超链接也是get方式发送的请求。

表单的中发送请求的方式由我们自己决定的,填写表单信息

首先地址由http://localhost:8080/JavaEE_day02

变为http://localhost:8080/JavaEE_day02/second.do?loginname=qwe&password=123(明文)

在路径后面加参数:在项目路径后面+?属性名=属性值&属性名=属性值&。。。&。。。

结果:

也就是说如果我们在method中赋值为get的话,那么它是以get方式发送的请求。

将method中的get值修改为post

然后接着访问看结果。(如果显示不出来注意清除缓存)地址栏由

http://localhost:8080/JavaEE_day02/变为http://localhost:8080/JavaEE_day02/second.do里面少了参数的值(暗文)

结果:

也就是说如果我们在method中赋值为post的话,那么它是以post方式发送的请求。

注意:我们在发送请求的时候要么是get要么是post两者选一,所以说doget和都post中的内容是一致的,那么我们是不需要写两遍,方法互调。

常见的错误:405原因:是因为缺少对应的方法。

将doget和dopost方法屏蔽,放出service方法

然后接着访问当前的servlet,无论如何访问最终结果都是调用的service方法

总结:service=doget+dopost

3.6 serlvet的常用API

serlvet的常用API有两个包组成

3.6.1 javax.servlet包:跟http请求无关的一般性servlet

1)ServletContext

使用request对象来获取ServletContext对象;有两个常用方法:getInitParameter(变量名)方法,获取指定变量名的变量值;getInitParameterNames()获取所有的变量名,以集合的形式返回,使用迭代器遍历即可;

使用ServletContext来设置全局变量,也就是说只有服务器不停止,在任何一个浏览器,同一个Web项目中任何一个Servlet中都能访问到变量。

例子:   

访问结果:

其他servlet访问全局变量:

创建ThirdServlet,重写doget和dopost方法

配置当前servlet

访问当前servlet,直接在浏览器中输入相应的地址

http://localhost:8080/JavaEE_day02/third.do

结果:

说明全局变量可以在任何一个servlet中被访问到,如果不知道变量名的情况下我们可以先获取变量名,然后在通过变量名来获取变量值。

获取变量名--使用servletcontext对象调用对应的方法

直接对当前servlet进行访问,得到结果:

同一个Web项目中的所有Servlet都可以获取到一般用于设置servlet之间的共享参数,或设置web应用中的初始参数等等;

2)ServletConfig

使用this就表示ServletConfig类型的对象;有两个常用方法:getInitParameter(变量名)方法,获取指定变量名的变量值;getInitParameterNames()获取所有的变量名,以集合的形式返回,使用迭代器遍历即可;

在哪个<servlet></servlet>标签中设置的变量,那该<servlet></servlet>是配置的哪个Servlet,就只能被哪个Servlet获取到设置的变量;即只能被当前Servlet访问到,不能被其他Servlet访问到;一般用于处理该servlet在配置文件中的配置信息

例子:

那只能在SecondServlet中被访问到:

重新启动服务器,然后对当前servlet进行访问

在不同的servlet中访问局部变量,就是将刚刚写的代码复制到thirdservlet中

结果:

在不同servlet中不能访问局部变量。

3.6.2 Javax.servlet.http包:跟http协议相关的类

自定义servlet继承自的HttpServlet(就属于该包下);Servlet接口决定了servlet的生命周期;以及两个常用接口HttpServletRequest(用来获取HTPP请求信息)和HttpServletResponse(用来提供HTTP响应);

常用方法:

getParameter(变量名):用来获取请求中的参数的方法

如何获取请求中的信息?

1)获取地址栏中信息:地址栏中的变量名来获取的。

例子:

1.创建项目javaEE_day05

2.创建FourServlet,继承于httoservlet,重写doget合dopost方法,在dopost中调用doget方法

3.在web.xml中配置当前servlet的映射路径

4.在servlet中使用方法来获取地址栏中参数(信息)

5.运行项目,在浏览器中输入

http://localhost:8080/JavaEE_day05/four.do

结果:

没有值是因为我们在浏览器中没有给出请求信息,也就是说

这里面的qwe变量名不存在,在地址栏中将参数变量加上,输入

http://localhost:8080/JavaEE_day05/four.do?qwe=qwe,结果:

说明我们使用此方法可以获取地址栏中请求信息

2)获取表单中的字段值:是提供name属性中属性值来获取的

例子:

1.设置首页,创建首页login.html,在首页中创建from表单

2.在servlet中获取表单的信息

3.运行项目,在页面中输入用户名和密码,点击提交

输入的地址:http://localhost:8080/JavaEE_day05/

跳转的地址:http://localhost:8080/JavaEE_day05/four.do

结果:

说明我们页面中输入的信息已经在后台获取出来了。

思考:如果遇到爱好,性别这些同名参数怎么办?

我们需要使用getParameterValues()方法:用来获取同名参数的value值

1.在servlet中写

2.在页面中添加多选

3.运行项目,选择男或者女

结果:

说明使用getParameterValues可以获取到同名参数的value值。

  • 39
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的小白L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值