java web servlet基础,javaweb jsp servlet
目录
前言:一。实现小型应用程序二。开发模式三。继承小型应用程序总结
前言:
我们在前几篇文章里的网项目都是用jsp文件完成的,那么什么时候jsp算是学完了呢?在jsp文件中没有java代码。——号
在原来的doxxx.jsp文件里写的都是处理登陆或者主页面功能的爪哇岛代码,现在我们需要小型应用程序来代替doxxx.jsp文件。
一.实现servlet
我们可以一个登陆来当例子。
建一个com.xxx.servlet包,在写一个实例三类
包com。zking。servlet导入Java。io。io异常;导入Java。io。版画家;导入javax。servlet。servlet导入javax。servlet。servlet配置;导入javax。servlet。servlet上下文;导入javax。servlet。servlet异常;导入javax。servlet。servlet请求;导入javax。servlet。servlet响应;导入javax。servlet。http。http servlet请求;导入javax。servlet。http。http servlet响应;导入javax。servlet。http。http会话;/* * * * @作者zjjt *用来实现登陆请求的处理*/公共类实例三实现Servlet{ //生命周期@Override//初始化公共void init(ServletConfig arg0)引发ServletException {//当请求来到这个小型应用程序就会调用初始化方法System.out.println(开始初始化);}@Override//服务公共空的服务(ServletRequest请求,ServletResponse响应)引发ServletException,IOException {//所有的代码写在这个方法中//strong转响应响应响应=(http servlet响应)resp//strong转请求http servlet请求request=(http servlet请求)req//如果用户名是中文请求。setcharacterencoding(“utf-8”);//取到用户数据字符串username=req。getparameter(“用户名”);字符串password=req。getparameter(“password”);//通过响应对象获得输出对象PrintWriter out=响应。getwriter();//通过请求对象取会话,需要强转请求http会话session=请求。getsession();//取应用通过请求对象servlet上下文应用程序=请求。get servlet context();//与数据库数据做对比if(root ).等于(用户名)“根123”.等于(密码)){//登陆成功//转发:req.getRequestDispatcher(/xx ).转发(请求,响应);//重定向:需要强转响应//响应。发送重定向(/xx );out.println(登陆成功);}else {//登陆失败out.println(登陆失败);}}@Override//销毁public void destroy() {//什么时候销毁//1.服务关闭时//2.这个类被修改时System.out.println(我销毁了);}@Override//得到配置公共servlet配置getservlet config(){//TODO自动生成的方法stubreturn null}@Override//得到信息公共字符串getServletInfo(){//TODO自动生成的方法家人们注意了在代码里我使用了强转
,是因为ServletRequest 和 ServletResponse 没有重定向功能,所有request(请求)和response(响应)取不到值。但是ServletRequest 和 ServletResponse的子类有重定向功能所有,我们要进行强转。
提供访问路径【web.xml】
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0"> <display-name>Web20</display-name> <!-- web.xml是整个项目的配置文件 --> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> <!-- 1.配置servlet --> <servlet> <!-- 给取个名字 --> <servlet-name>one</servlet-name> <!-- servlet-class需要填上类的全路径 --> <servlet-class>com.zking.servlet.LoginServlet</servlet-class> </servlet> <!-- 2.配置servlet的访问路径 --> <!-- mapping 映射 --> <servlet-mapping> <!-- 对应的servlet的名字 --> <servlet-name>one</servlet-name> <!-- 给它配置一个访问路径 --> <url-pattern>/login.do</url-pattern> </servlet-mapping></web-app>
切记修改了web.xml的代码一定要重启服务器
访问路径一定要加/,否则运行会报错
登陆界面代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><!-- action里填配置的路径不需要加/ --><form action="login.do" method="post"> <p><input type="text" name="username"></p> <p><input type="text" name="password"></p> <p><button>登陆</button></p></form></body></html>
这样我们的登陆就完成了,但是这样大家会不会觉得代码有点多,没关系,还有其他方法。
二.开发模式
我们的开发模式有两种,一种是(传统的开发模式)配置式开发,另一种是注解式开发。我们上面所讲的就是配置式开发,接下来我们来讲一讲注解式开发~( ̄▽ ̄)~*。
注解式开发使用的是@注解,在代码中@WebServlet就等于web.xml里的
在@WebServlet后面加上(),在里面直接填入路径,例如@WebServlet("/xxx")就等于web.xml里的
三.继承Servlet
使用注解式开发的方法我们就可以不用修改web.xml代码了,是不是简单多了(●'◡'●)。接下来我们写一个MyServlet文件,写Servlet有两种方法,一种式实现,另一种是继承。实现的方法我们已经写过了,接下来我们使用继承的方法
package com.zking.servlet; import java.io.IOException;import java.io.PrintWriter; import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * * @author zjjt * */@WebServlet("/test.do")//直接填访问路径public class MyServlet extends HttpServlet{//不同的请求方式://doGet 专门处理get请求//doPost 专门处理post请求@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//登陆功能doPost(req,resp);} @Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//登陆功能//如果用户名是中文req.setCharacterEncoding("utf-8");//取到用户数据String username = req.getParameter("username");String password = req.getParameter("password");//支持中文的编码【utf-8】【gb2312】【big5】req.setCharacterEncoding("gb2312");//通过响应对象获得输出对象PrintWriter out = resp.getWriter(); //通过请求对象取session,需要强转请求HttpSession session = req.getSession();//取application通过请求对象ServletContext application = req.getServletContext();//与数据库数据做对比if("root".equals(username)&&"root123".equals(password)) {//登陆成功//转发:req.getRequestDispatcher("/xx").forward(req, resp); //重定向:需要强转响应//response.sendRedirect("/xx");out.println("登陆成功");}else {//登陆失败out.println("登陆失败");}}}
家人们有发现实现和继承servlet有什么区别了吗
我相信细心的家人们应该已经发现了我这里继承的是HttpServlet而不是Servlet。这是因为HttpServlet是它的子类,具有重定向功能,这下我们又可以省去强转的部分了。所有我推荐大家使用注解式开发模式和继承Servlet的方式来写Servlet哟~
总结
到此这篇关于JavaWeb.servlet基本使用的文章就介绍到这了,更多相关JavaWeb.servlet使用内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。