Server--Servlet
一、复习
JSP---Servlet
JSP本质就是一个Servlet,加载到虚拟机时候翻译成Java程序。
JSP---Servlet
JSP本质就是一个Servlet,加载到虚拟机时候翻译成Java程序。
二、新内容 Servlet javax.servlet包和javax.servlet.http包
一、Servlet概述
运行在服务器端的Java代码
运行在服务器端的Java代码
二、开发我们的第一个Servlet(手工创建)
1、新建一个Web Project
2、新建一个Class,命名为MyServlet,继承于类HttpServlet。
3、重写HttpServlet类的service方法。
4、配置WebRoot文件夹下WEB-INF下的web.xml文件
1、新建一个Web Project
2、新建一个Class,命名为MyServlet,继承于类HttpServlet。
3、重写HttpServlet类的service方法。
4、配置WebRoot文件夹下WEB-INF下的web.xml文件
定义一个servlet服务
服务的名字叫做:MyServlet(名字可以改,自己定义)
这个服务执行的代码是:com.style.servlet.MyServlet里的service方法
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.style.servlet.MyServlet</servlet-class>
</servlet>
服务的名字叫做:MyServlet(名字可以改,自己定义)
这个服务执行的代码是:com.style.servlet.MyServlet里的service方法
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.style.servlet.MyServlet</servlet-class>
</servlet>
定义一个servlet服务和url的映射关系
服务的名字叫做:MyServlet(跟上面定义的名字一样)
在浏览器里请求的路径是:/hello (名字可以改,自己定义)
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
服务的名字叫做:MyServlet(跟上面定义的名字一样)
在浏览器里请求的路径是:/hello (名字可以改,自己定义)
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
5、当我们在浏览器上输入对应的http://localhost/项目上下文/hello的时候,服务器就通过web.xml找/hello上下文对应的servlet-name,再通过servlet-name找到对应的Class执行里面的service方法。(一定要明白,是在服务器上执行!)
三、HttpServlet的创建(工具创建)
1、新建一个Web Project,创建一个包com.lixiang.servlet
2、右键点击包,新建一个servlet:New--Servlet
在Name后填入Servlet名字,下方勾选覆盖父类的方法doGet、doPost
3、点击next,修改Servlet/JSP Mapping URL: /xxx (配置访问的URL)
4、Servlet创建好以后,将Java Web Project发布到web服务器下面。
注意!对Servlet的修改配置都必须重启服务器!修改JSP不用!
5、访问Servlet的URL默认调用doGet方法。(代码里加控制台输出验证)
6、request,response,out三个对象,介绍Servlet里out的html标签
7、常见错误:
Mapping URL定义的url不正确、web.xml里面的配置文件不正确。
404错误:表示页面没有找到,检查url写得是否正确。
500错误:页面报ClassNoFoundException
web.xml配置文件里Servlet的包和类写得是否正确。
四、Servlet工作原理
1、浏览器请求web服务器资源,web服务器根据url将请求发送给Servlet,web服务器将创建两个对象,HttpServletRequest类型的request和HttpServletResponse类型的response。
HttpServletRequest类型的request :请求对象
HttpServletResponse类型的response :响应对象
PrintWriter out :向文本输出流打印对象的格式化表示形式
2、代码步骤:
1、response.setContentType("text/html");
给响应对象设置一个内容类型,返回一个html内容的信息。
2、PrintWriter out = response.getWriter();
通过响应对象拿到向浏览器写数据的PrintWriter out对象。
3、使用out.println方法向流中写入数据。
4、out.flush(); 刷新清空该流的缓冲
5、out.close(); 关闭该流并释放与之关联的所有系统资源。
3、代码示例:
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8"); //代码位置!一定要放在最上面
PrintWriter out = response.getWriter();
out.println("Hello World!");
out.println("你好,赵日天!"); //这里会产生响应乱码,怎么解决?
out.flush();
out.close();
★小技巧:Tomcat启用debug模式,可以不重启服务器调试!
1、新建一个Web Project,创建一个包com.lixiang.servlet
2、右键点击包,新建一个servlet:New--Servlet
在Name后填入Servlet名字,下方勾选覆盖父类的方法doGet、doPost
3、点击next,修改Servlet/JSP Mapping URL: /xxx (配置访问的URL)
4、Servlet创建好以后,将Java Web Project发布到web服务器下面。
注意!对Servlet的修改配置都必须重启服务器!修改JSP不用!
5、访问Servlet的URL默认调用doGet方法。(代码里加控制台输出验证)
6、request,response,out三个对象,介绍Servlet里out的html标签
7、常见错误:
Mapping URL定义的url不正确、web.xml里面的配置文件不正确。
404错误:表示页面没有找到,检查url写得是否正确。
500错误:页面报ClassNoFoundException
web.xml配置文件里Servlet的包和类写得是否正确。
四、Servlet工作原理
1、浏览器请求web服务器资源,web服务器根据url将请求发送给Servlet,web服务器将创建两个对象,HttpServletRequest类型的request和HttpServletResponse类型的response。
HttpServletRequest类型的request :请求对象
HttpServletResponse类型的response :响应对象
PrintWriter out :向文本输出流打印对象的格式化表示形式
2、代码步骤:
1、response.setContentType("text/html");
给响应对象设置一个内容类型,返回一个html内容的信息。
2、PrintWriter out = response.getWriter();
通过响应对象拿到向浏览器写数据的PrintWriter out对象。
3、使用out.println方法向流中写入数据。
4、out.flush(); 刷新清空该流的缓冲
5、out.close(); 关闭该流并释放与之关联的所有系统资源。
3、代码示例:
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8"); //代码位置!一定要放在最上面
PrintWriter out = response.getWriter();
out.println("Hello World!");
out.println("你好,赵日天!"); //这里会产生响应乱码,怎么解决?
out.flush();
out.close();
★小技巧:Tomcat启用debug模式,可以不重启服务器调试!
4、JSP本质上就是一个Servlet。
五、Servlet获取参数代码示例:
LoginServlet.java
请求乱码解决方式:
request.setCharacterEncoding("utf-8");
用户登录实例步骤:
//解决请求乱码问题
request.setCharacterEncoding("utf-8");
//解决响应乱码问题
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
//获取前一个页面传递过来的参数
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
//通过响应对象拿到向浏览器写数据的PrintWriter out对象。
PrintWriter out = response.getWriter();
//向out流写入数据
out.println("<h1>用户名是:"+name+",密码是:"+pwd+"</h1>");
//刷新清空该流的缓冲
out.flush();
//关闭流
out.close();
思考:什么是请求乱码?什么是响应乱码?怎么解决?
LoginServlet.java
请求乱码解决方式:
request.setCharacterEncoding("utf-8");
用户登录实例步骤:
//解决请求乱码问题
request.setCharacterEncoding("utf-8");
//解决响应乱码问题
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
//获取前一个页面传递过来的参数
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
//通过响应对象拿到向浏览器写数据的PrintWriter out对象。
PrintWriter out = response.getWriter();
//向out流写入数据
out.println("<h1>用户名是:"+name+",密码是:"+pwd+"</h1>");
//刷新清空该流的缓冲
out.flush();
//关闭流
out.close();
思考:什么是请求乱码?什么是响应乱码?怎么解决?