Java web期末
一,简答题
1、Servlet的体系结构
1)Servlet接口,规定了必须由Servlet类实现并且由Servlet引擎识别和管理的方法集2)GenericServlet抽象类,提供了除service()方法之外其他有关Servlet生命周期的方法3)ServletConfig接口,获取Servlet初始化参数和ServletContext对象4)HttpServlet抽象类,在原有Servlet接口上添加了对HTTP协议的处理,比Servlet功能更强大5)HttpServletRequest接口,用于封装HTTP请求信息6)HttpServletResponse接口,用于封装HTTP响应消息
02、Servlet的生命周期
1)实例化 如果Servlet配置了load-on-startup,则服务器在启动时自动实例化该Servlet,如果没有配置,则在服务器启动后,客户首次向Servlet发出请求时,实例化该Servlet。2)初始化 Servlet实例化后,Servlet容器将调用Servlet的init方法来对Servlet实例进行初始化,如果初始化成功,Servlet在Web容器中会处于服务可用状态;如果初始化失败,Servlet容器会销毁该实例;当Servlet运行出现异常时,Servlet容器会使该实例变为服务不可用状态。3)请求处理 服务器接收到客户端请求,会为该请求创建“请求”对象和“响应”对象,并调用service()方法,service()方法再调用其他方法来处理请求。在Servlet生命周期中,service()方法可能被多次调用。当多个客户端同时访问某个Servlet的service()方法时,服务器会为每个请求创建一个线程,这样可以并行处理多个请求,减少请求处理的等待时间,提高服务器的响应速度。4)服务终止 当Servlet容器需要终止Servlet,它会先调用Servlet的destroy()方法使其释放正在使用的资源。在调用destroy()方法之前,必须让当前正在执行service()方法的任何线程完成执行。在destroy()方法完成后,Servlet容器必须释放Servlet实例以便被垃圾回收。
03、转发与重定向的区别
重定向和请求转发都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有很大的区别:1)请求转发只能将请求转发给同一个Web应用中的组件;而重定向不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,或者重定向到其他站点的资源;2)请求转发过程结束后,浏览器地址栏保持初始的URL地址不变;重定向结束后,浏览器地址栏的URL会发生改变,由初始的URL地址变成重定向的目标URL; 3)请求转发调用者与被调用者共享相同的request、response对象,它们属于同一个访问的请求和响应过程;重定向调用者与被调用者使用各自的request对象和response对象,它们属于两个独立访问的请求和响应过程
04、include指令与include动作的区别
1)共同点:include指令元素和include动作元素的作用都是实现包含文件代码的复用。2)不同点1:include指令元素是在翻译阶段就引入所包含的文件,被处理的文件在逻辑和语法上依赖于当前JSP页面,优点是页面的执行速度快。3)不同点2:include动作元素是在JSP页面运行时才引入包含文件所产生的应答文本,被包含的文件在逻辑和语法上独立于当前JSP页面,优点是可以使用param子元素更加灵活地处理所需要的文件,缺点是执行速度要慢一些。
05、JSP的脚本元素的组成及功能
1)脚本元素允许用户将小段的代码添加到JSP页面中,包括脚本、表达式、声明和注释2)脚本,<% %>,是指JSP中的代码部分,在这个部分中可以使用几乎任何Java的语法3)表达式,<%= %>,是做一种简化的输出形式4)声明,<%! %>,定义一个或多个变量和方法5)注释,<%-- --%>,编译时忽略其内容,在客户端看不到
06、JSP的指令元素的组成及功能
1)指令用来向容器提供编译信息,并不向客户端产生任何输出,只在当前页面中有效。2)page指令一般位于JSP页面的开头部分,用来描述和页面相关的信息3)include指令在页面翻译期间引入另一个文件4)include指令包含文件时,必须保证新合并生成的文件符合JSP语法规则5)taglib指令用于指定JSP页面所使用的标签库,通过该指令可以在JSP页面中使用标签库中的标签
07、JSP的动作元素的组成及功能
1)<jsp:include>动作用于在页面被请求时引入一个文件2)<jsp:forward>动作用于把请求转发到另一个页面3)<jsp:useBean>动作用于查找或实例化一个JavaBean4)<jsp:setProperty>动作用于设置JavaBean的属性5)<jsp:getProperty>动作用于输出某个JavaBean的属性
08、JavaBean的规范
1)JavaBean是一个公开的(public)类,以便被外部程序访问;2)具有一个无参的构造方法,以便被外部程序实例化时调用;3)提供setXxx()方法和getXxx()方法,以便让外部程序设置和获取其属性。
09、JSP的page指令中的import、contentType、pageEncoding、errorPage、buffer属性的功能
1)import:指定导入的Java软件包或类名列表,若有多个类,中间用逗号隔开2)contentType:指定MIME类型和JSP页面响应时的编码方式,默认为“text/html;charset=ISO8859-1”3)pageEncoding:指定JSP文件本身的编码方式,例如pageEncoding="UTF-8"4)errorPage:设定JSP页面发生异常时重新指向的页面URL,指向的页面文件要把isErrorPage设成true5)buffer:指定输出流是否需要缓冲,如果设成true则当输出缓冲区满的时候
10、@WebServlet注解常用的属性
1)name Servlet的名字,一般与Servlet的类名相同2)urlPatterns 指定URL匹配模式,可以是地址映射(/servlet1)、目录映射(/servlet/*)、扩展名映射(*.action)3)value 等价于urlPatterns,两个属性不能同时使用4)loadOnStartup 指定Servlet的加载顺序 未指定或<0,表示该Servlet第一次被请求时才加载 >=0,表示应用启动时加载该Servlet,值越小,越先加载,原则上不同Servlet值不同5)initParams 一组Servlet初始化参数
11、JSP的9大内置对象
1)request:请求对象,提供客户端HTTP请求数据的访问2)response:响应对象,用来向客户端输出响应3)out:输出对象,提供对输出流的访问 4)session:会话对象,用来保存服务器与每个客户端会话过程中的信息 5)application:应用程序对象,用来保存整个应用环境的信息6)pageContext:页面上下文对象,用于存储当前JSP页面的相关信息7)config:页面配置对象,JSP页面的配置信息对象 8)page:当前JSP页面对象,即this 9)exception:异常对象,用于处理JSP页面中的错误
12、JSP的四种作用域及其生命周期
1)页面域(page scope),存储在页面域的对象只对于它所在页面是可访问的。2)请求域(request scope),请求域的生命周期是指一次请求过程,包括请求被转发(forward)或者被包含(include)的情况。存储在请求域中的对象只有在此次请求过程中才可以被访问。 3)会话域(session scope),会话域的生命周期是指某个客户端与服务器所连接的时间,存储在会话域中的对象在整个会话期间(可能包含多次请求)都可以被访问。4)应用域(application scope),应用域的生命周期是指从服务器开始执行服务到服务器关闭为止,存储在应用域中的对象在整个应用程序运行期间可以被所有JSP和Servlet共享访问。
13、JSP执行过程
1)客户向服务器发送JSP页面请求(request);2)容器接收到请求后检索对应的JSP页面,如果该JSP页面(或被修改后的JSP页面)是第一次被请求,则容器将此页面中的静态数据(HTML文本)和动态数据(Java脚本)全部转化成Java代码,使JSP文件翻译成一个Java文件,即Servlet;3)容器将翻译后的Servlet源代码编译形成字节码文件(.class),对于Tomcat服务器而言,生成的字节码文件默认存放在“<Tomcat安装目录>\work目录下”;4)编译后的字节码文件被加载到容器内存中执行,并根据用户的请求生成HTML格式的响应内容;5)容器将响应内容即响应(response)发送回客户端。
14、Session对象的创建与销毁(即何时创建Session对象,何时销毁)
创建:1)对Servlet而言,第一次执行request.getSession()时,创建Session 2)对JSP而言,默认情况下,客户端第一次访问该JSP时,创建Session
销毁:3)显示调用HttpSession.invalidate()方法 4)Session超时 5)服务器关闭或服务停止
15、EL的隐含对象
pageContext:对应于JSP页面中的pageContext对象 pageScope:代表page域中用于保存属性的Map对象 requestScope:代表request域中用于保存属性的Map对象 sessionScope:代表session域中用于保存属性的Map对象 param:表示一个保存了所有请求参数的Map对象 paramValues:表示一个保存了所有请求参数的Map对象,返回的是一个string[]header:表示一个保存了所有http请求头字段的Map对象 headerValues:表示一个保存了所有http请求头字段的Map对象,返回string[]数组 cookie:表示一个保存了所有cookie的Map对象 initParam:表示一个保存了所有web应用初始化参数的map对象
16、jstl核心标签库中常见的标签
通用标签:<c:out>、<c:set>、<c:remove>、<c:catch> 条件标签:<c:if>、<c:choose>、<c:when>、<c:otherwise> 迭代标签:<c:forEach>、<c:forTokens> URL标签:<c:url> 、<c:redirecrt>
17、过滤器的生命周期
1)加载和实例化 Web容器启动时,会根据@WebFilter属性filterName所定义的类名的大小写拼写顺序,或者web.xml中声明的Filter顺序依次实例化Filter。2)初始化 Web容器调用init(FilterConfig config)方法来初始化过滤器。容器在调用该方法时,向过滤器传递FilterConfig对象。实例化和初始化的操作只会在容器启动时执行,并且只会执行一次。3)doFilter()方法的执行 当客户端请求目标资源的时候,容器会筛选出符合过滤器映射条件的Filter,并按照@WebFilter属性filterName所定义的类名的大小写拼写顺序,或者web.xml中声明的filter-mapping的顺序依次调用这些过滤器的doFilter()方法。4)销毁 Web容器调用destroy()方法指示过滤器的生命周期结束。在这个方法中,可以释放过滤器使用的资源。
18、XMLHttpRequest对象的readyState的五种状态和status的五种状态
readyState的五种状态0、初始状态,未调用send()方法 1:调用send()方法,开始发送请求2:send()完毕,客户端数据发送到服务器,服务器响应,客户端接收服务器的响应内容 3:开始解析响应内容 4:解析响应内容完毕,客户端可以查看响应结果
status的五种状态:1xx:信息提示 2xx:成功,常用200 3xx:重定向 4xx:客户端错误 5xx:服务器错误
19、Cookie的分类
1)cookie在浏览器第一次访问服务器时生成,并通过响应带回到浏览器。如果访问servlet时,即没有new Cookie()并添加到响应对象,也没有显式request.getSession()则不生成cookie2)根据cookie的setMaxAge(单位为秒,<0、>0、=0)区分为:临时cookie,setMaxAge的参数<0或者没有执行setMaxAge,cookie存储在浏览器内存中,浏览器关闭即失效永久cookie,setMaxAge的参数>0,cookie以文件形式存储在操作系统中,超过最大值时失效 setMaxAge的参数=0时,删除该cookie3)浏览器再次访问服务器的时候,根据cookie的setDomain、setPath、setMaxAge共同确定是否携带该cookie,如果携带该cookie,则取该cookie的name和value,其余的domain、path、maxage都不带(为了减少数据量)这也解释了服务器取到cookie以后,所有cookie的name、value有值,其余domain、path为空、maxage为-14)默认情况下,创建Cookie时没有设置路径,该Cookie只能被当前目录及子目录应用访问。
20、当客户端访问服务器页面(html、jsp)时,是否会创建Session对象,为什么
1)访问html等静态资源,因为不会被编译为Servlet,所以不创建Session对象。2)第一次访问jsp时,服务器会自动为其创建一个session,并把其id发送给客户端,以后客户端接收到请求本应用中其他资源的时候,会自动在请求头上添加:Cookie:JSESSIONID=客户端第一次拿到的session ID 这样,服务器在接到请求时候,就会收到session ID,并根据ID在内存中找到之前创建的session对象,提供给请求使用。
二,看编程题
登录页面:前端:<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE html ><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="login" method="post" ><input type="text" name="name" value="admin"><br><input type="password" name="pwd" value="123"><br><input type="submit"> </form></body></html>servlet:package com.qst.abc;import com.qst.bean.User;import com.qst.db.DbUtil;@WebServlet("/login") public class MyServlet1 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name"); String pwd = request.getParameter("pwd");try {Connection conn = DbUtil.getConn();String sql = "select * from user where username=? and pwd=?";PreparedStatement pstm = conn.prepareStatement(sql);pstm.setObject(1, name);pstm.setObject(2, pwd); ResultSet rs = pstm.executeQuery();User u = null;while(rs.next()) {u = new User();u.setId(rs.getInt("id"));u.setUserno(rs.getString("userno"));u.setUsername(rs.getString("username"));u.setPwd(rs.getString("pwd"));}if(u == null) {response.getWriter().write("info error");}else {response.sendRedirect("main.jsp");} } catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally{DbUtil.close(rs,pstmt,conn);}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}user:public class User {private int id;private String userno;private String username;private String pwd;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserno() {return userno;}public void setUserno(String userno) {this.userno = userno;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}注册页面:前端:<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><form action="register" method="post" >姓名<input type="text" name="name"><br> 密码<input type="password" name="pwd"><br> <input type="submit"></form></body></html>servlet:package com.qst.servlet;@WebServlet("/register")public class MyReg extends HttpServlet {private static final long serialVersionUID = 1L;public MyReg() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");String name = request.getParameter("name");String pwd = request.getParameter("pwd");User u = new User();u.setUsername(name);u.setPwd(pwd);UserDao ud = new UserDao();boolean flag = ud.add(u);if(flag) {response.getWriter().write("添加成功");System.out.println("添加成功");}else {response.getWriter().write("添加失败");System.out.println("添加失败");} }protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}user:public class User {private int id;private String username;private String pwd;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}}userdao:public class UserDao {public boolean add(User u) {Connection conn = null;PreparedStatement pstm = null;try {conn = DBUtil.getConnection(); String sql = " insert into user(username,pwd) values(?,?) ";pstm = conn.prepareStatement(sql); pstm.setObject(1, u.getUsername());pstm.setObject(2, u.getPwd()); return pstm.executeUpdate()>0;} catch (SQLException e) {e.printStackTrace();return false;}finally {DBUtil.closeJDBC(null, pstm, conn);}}public User queryByNamePwd(String name, String pwd) {Connection conn = null;PreparedStatement pstm = null;ResultSet rs = null;try {conn = DBUtil.getConnection(); String sql = " select * from user where username=? and pwd=? ";pstm = conn.prepareStatement(sql); pstm.setObject(1, name);pstm.setObject(2, pwd); rs = pstm.executeQuery();User u = null;while(rs.next()) {int id = rs.getInt("id");String str1 = rs.getString("username");String str2 = rs.getString("pwd");u = new User();u.setId(id);u.setUsername(str1);u.setPwd(str2); } return u;} catch (SQLException e) {e.printStackTrace();return null;}finally {DBUtil.closeJDBC(rs, pstm, conn);}}}分页查询:
jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.List" %>
<%@ page import="com.qst.enity.User" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><h1>用户管理界面</h1> <table border="1px" cellspacing="0" align="center"><tr><td>id</td><td>name</td><td>pwd</td><td>email</td></tr><c:forEach items="${AllUsers.pageData}" var="x"><tr><td>${x.id }</td><td>${x.name }</td><td>${x.pwd }</td><td>${x.email }</td></tr></c:forEach></table><table align="center"><tr><td>当前${AllUsers.currentPage}/${AllUsers.totalPage}页</td><td><a href="UserServlet?currentPage=1">首页</a></td><td><a href="UserServlet?currentPage=${AllUsers.currentPage-1}">上一页</a></td><td><a href="UserServlet?currentPage=${AllUsers.currentPage+1}">下一页</a></td><td><a href="UserServlet?currentPage=${AllUsers.totalPage}">尾页</a></td></tr></table>
</body>
</html>
---------------------------------------------------------------------------------------------------
pageBean:
public class PageBean<T> {private List<T> pageData; //0、查询到的分页结果集private int totalCount = 0 ; //1、总记录数private int pageSize = 5; //2、每页记录数 private int totalPage = 1; //3、总页数private int currentPage = 1; //4、当前页private int startNum = 1; //5、开始行号:(当前页-1)*每页记录数public List<T> getPageData() {return pageData;}public void setPageData(List<T> pageData) {this.pageData = pageData;}public int getTotalCount() {return totalCount;}public void setTotalCount(int totalCount) {this.totalCount = totalCount;}public int getCurrentPage() {return currentPage;}public void setCurrentPage(int currentPage) {this.currentPage = currentPage;} public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public int getTotalPage() {totalPage = totalCount / pageSize;if (totalCount == 0 || totalCount%pageSize != 0) totalPage++;return totalPage;} public void setTotalPage(int totalPage) {this.totalPage = totalPage;}public int getStartNum() {return (this.currentPage-1)*this.pageSize;}public void setStartNum(int startNum) {this.startNum = startNum;}
}
----------------------------------------------------------------------------------------------------
dao :
public PageBean<User> queryAll2(String currentPage) {PageBean<User> pageBean = new PageBean<>();pageBean.setTotalCount(getTotalCount());int no;try {no = Integer.parseInt(currentPage);if(no<1)no = 1;else if(no>pageBean.getTotalPage())no = pageBean.getTotalPage();}catch (Exception e) {no = 1;} pageBean.setCurrentPage(no);List<User> users = new ArrayList<>();try {conn = DbUtil.getConn(); String sql = " select * from user limit ?,? ";pstm = conn.prepareStatement(sql);pstm.setObject(1, pageBean.getStartNum());pstm.setObject(2, pageBean.getPageSize());ResultSet rs = pstm.executeQuery();while(rs.next()) {User u = new User();u.setId(rs.getInt("id"));u.setName(rs.getString("name"));u.setPwd(rs.getString("pwd"));u.setEmail(rs.getString("email"));u.setRole(rs.getString("role"));users.add(u);} pageBean.setPageData(users);return pageBean;} catch (Exception e) {e.printStackTrace();return null;} finally {DbUtil.close(rs,pstm,conn);} }
servlet:@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {private static final long serialVersionUID = 1L;public UserServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String pageNoStr = request.getParameter("currentPage");UserDao us = new UserDao();PageBean<User> users = us.queryAll2(pageNoStr);request.setAttribute("AllUsers", users);request.getRequestDispatcher("userManage.jsp").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}文件的上传前端:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="UploadServlet" enctype="multipart/form-data" method="post" ><input type="file" name="f1" ><input type="submit"></form></body></html>servlet:@WebServlet("/UploadServlet")@MultipartConfigpublic class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;public UploadServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {0、这种写法会把所有上传的文件都存为1.txt,覆盖Part p = request.getPart("f1"); p.write("c://temp//1.txt");
// 1、request取上传文件信息Part p = request.getPart("f1");
// 2、从part中取文件名String header = p.getHeader("content-disposition");
// 3、不同浏览器的p.getHeader返回格式不同,需重新提取文件名String fileName = getFileName(header);
// 4、取文件的扩展名String suffix = fileName.substring(fileName.lastIndexOf("."));
// 5、为防止文件重名导致覆盖,使用时间字符串重新拼接文件名String str = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); fileName = fileName.substring(0,fileName.lastIndexOf("."))+"_"+str+suffix;
// 6、把上传文件的内容写入服务器p.write("c://temp//"+fileName); response.getWriter().write("upload ok"); }private String getFileName(String header) {// 把form-data; name="myfile"; filename="abc.doc"切成3份String[] temp1 = header.split(";"); // 把filename="abc.doc"切成2份 String[] temp2 = temp1[2].split("=");// 从abc.doc或者E:\abc.doc中提取文件名 return temp2[1].substring(temp2[1].lastIndexOf("\\") + 1).replaceAll("\"", "");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1、生成验证码的Servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{// 1、定义验证码底图宽高int width = 80;int height = 30;// 2、创建验证码底图BufferedImage image= new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);// 3、取验证码底图的画笔,用来画底图、写验证码Graphics g = image.getGraphics();// 4、设置画笔颜色g.setColor(Color.BLUE);// 5、画黑色的验证码底图g.fillRect(0, 0, width, height);// 7、定义验证码集合String[] codes = {"0","1","2","3","4","5","6","7","8","9"};StringBuilder sb = new StringBuilder();Random r = new Random();// 8、修改画笔颜色,准备往底图上写验证码g.setColor(Color.WHITE);// 9、随机生成4位验证码,写入底图并存入字符串for(int i=0; i<4; i++) {int n = r.nextInt(10);String code = codes[n];// 10、验证码写入底图g.drawString(code, 20*i, 15);// 11、验证码存入字符串sb.append(code);}// 12、验证码字符串写入session,即存到服务器端,备验证使用request.getSession().setAttribute("checkcode", sb.toString());// 13、设置响应内容为图片response.setContentType("image/jpeg"); // 14、设置http报头,不允许缓存response.setDateHeader("expires", 0);response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache");// 15、验证码写入客户端ImageIO.write(image, "jpeg", response.getOutputStream());
}2、登录界面
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">function reCode(){document.getElementById("chkcode").src= "ChkcodeServlet?x="+new Date();}
</script>
</head>
<body><form action="LoginServlet" method="post"><input type="text" name="user" placeholder="用户名"><br><input type="password" name="pwd" placeholder="密码"><br><input type="text" name="chkcode" placeholder="验证码"><img id="chkcode" title="点击刷新" onclick="reCode()" src="ChkcodeServlet" ><br><input type="submit"></form>
</body>
</html>
Java web期末相关推荐
- 分享java web 期末项目实验源码20套,BBS论坛,ERP管理系统,OA自动化等等
分享java web 期末项目实验源码20套,BBS论坛,ERP管理系统,OA自动化等等 我自己也从里面学习到了很多东西! 1.BBS论坛系统(jsp+sql) 2.ERP管理系统(jsp+servl ...
- java web期末课程设计 学生成绩管理系统(mysql,jstl+el,Javabean)+增删改查,session域+servlet(基础易理解)
学生成绩管理系统 一.实验目的 为了更好的学习理解JavaWeb,创建了此系统.此系统可以帮助学习Java web基础,特别是javaweb入门,此系统使用大部分Java web基础知识.Java w ...
- java web期末_javaweb期末考试模拟题
javaweb期末考试模拟题 单选题(每小题2分,共30分)隐藏/显示 o 1. 下列关于 HTML 的说法不正确的是______. [2.0 分] A. 标签的属性可用单引号也可用双引号 ...
- java web期末考试试卷_2016年大学java期末考试试题(10)
A. 主键顺序为数据的物理顺序 B. 主键:默认将是聚簇索引 唯一索引: 默认将是非聚簇索引 C. 主键每个表只能有一个,唯一索引可以多个 D. 主键不能空,唯一索引可以为空 36. HTTP/1.1 ...
- java实验项目代码_java web 期末项目实验源码20套,自用学习非常不错!
分享java web 期末项目实验源码20套,自用学习非常不错! 我自己也从里面学习到了很多东西! 1.BBS论坛系统(jsp+sql) 2.ERP管理系统(jsp+servlet) 3.OA办公自动 ...
- Java Web 程序设计期末复习重要知识点总结
目录 前言 一.Java Web是什么? 二.安装eclipse.jdk.tomcat服务器 1.安装eclipse 2.设置eclipse为中文 3.安装jdk 4.安装tomcat 5.设置编码格 ...
- java成果_JAVA WEB期末项目第二阶段成果
我们做的系统是一个基于Java web与MySQL的食堂订餐系统 班级: 计科二班 小组成员:李鉴宣.袁超 1.开发环境 开发编辑器使用:Visual Studio Code 数据库使用:MySQL8 ...
- 福州大学java期末试卷,Java Web认证题.doc
Java Web认证题.doc 福州大学工程技术学院福州大学工程技术学院 04 级级 Web 应用程序设计应用程序设计Java 扬帆把舵,奋勇拼搏,看我扬帆把舵,奋勇拼搏,看我Java,英姿焕爽,英姿 ...
- java成果_JAVA Web期末项目第三阶段成果
我们做的系统是一个基于Java web与MySQL的食堂点餐系统 班级: 计科二班 小组成员:李鉴宣.袁超 项目的测试 在系统部署到云服务器之前,已经在本机上进行了部署测试,通过mvn打包生成war文 ...
最新文章
- ASP.NET程序中常用的三十三种代码
- 强化学习(十二) Dueling DQN
- Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习、深度学习、大数据、云计算等)推荐系统(包括语音生成、识别等前沿黑科技)
- 2021-02-25
- 【C#学习笔记】单精度和双精度浮点型操作留意。
- 谷歌全球服务均宕机,系因内部存储配额问题引发
- 5)Javascript设计模式:extends模式
- Linux系统安装pgp教程,在Linux系统下安装pgpcommandline
- 如何用OBS录制Mac系统声音
- Face Recognition 库-人脸识别
- 使用 stm32实现锂电充电_12V锂电池保护板电路图锂电池保护板工作原理及短路、过充电等控制原理分析...
- 裸辞后破釜沉舟三个月,拿到SSP!
- VS2017编写汇编并调用c库函数(msvcrt.lib)
- 阳历日期转阴历工具类
- 计算长方形或正方形的周长和面积
- c语言求斐波那契数列n项以及前n项和
- 【射频知识】PCB材料/层叠/信号注入设计与传输线实现形式的性能比对
- DOA估计 基于稀疏贝叶斯的离格DOA估计
- linux c与c语言的区别吗,嵌入式c语言与c语言的区别
- Android调用微信扫一扫