Tomcat-Servlet(二)

Java Web登录示例
本文介绍了一个简单的Java Web用户登录示例,包括index.jsp页面、web.xml配置文件、MyServlet2处理类等内容。示例展示了如何通过GET方式提交表单,并在Servlet中获取用户名和密码。

1、index.jsp

<%@ 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>
    <div align="center">
	<h4>用户登录</h4>
	<form action="http://localhost:8080/DemoServlet/myServlet2" method="get">
		姓名:<input type="text" name="userName" align="right"><br>
		密码:<input type="password" name="passWord" align="right"><br>
		<span style="">
			<input type="submit" value="登录">
			<input type="submit" value="忘记密码">
		</span>
	</form>
    </div>
</body>
</html>

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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>DemoServlet</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>myServlet2</servlet-name>
  	<servlet-class>com.demo.servlet.MyServlet2</servlet-class>
  	<init-param>
  		<param-name>myServlet1</param-name>
  		<param-value>myServletValue1</param-value>
  	</init-param>
  	<init-param>
  		<param-name>myServlet2</param-name>
  		<param-value>myServletValue2</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>myServlet2</servlet-name>
  	<url-pattern>/myServlet2</url-pattern>
  </servlet-mapping>
</web-app>

3、继承HttpServlet

package com.demo.servlet;

import java.io.IOException;
import java.util.Locale;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet2 extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	 protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{
		 
		 String characterEncoding = req.getCharacterEncoding();
		 System.out.println("***CharacterEncoding: "+characterEncoding);
		 String contentType = req.getContentType();
		 System.out.println("***ContentType: "+contentType);
		 int contentLength = req.getContentLength();
		 System.out.println("***ContentLength: "+contentLength);
		 
		 String localAddr = req.getLocalAddr();
		 System.out.println("***LocalAddr: "+localAddr);
		 Locale locale = req.getLocale();
		 System.out.println("***Locale: "+locale);
		 String localName = req.getLocalName();
		 System.out.println("***LocalName: "+localName);
		 int localPort = req.getLocalPort();
		 System.out.println("***LocalPort: "+localPort);
		 
		 ServletContext servletContext = req.getServletContext();
		 System.out.println("***servletContext: "+servletContext);
		 String contextPath = req.getContextPath();
		 System.out.println("***ContextPath: "+contextPath);
		 
		 String protocol = req.getProtocol();
		 System.out.println("***Protocol: "+protocol);
		 String method = req.getMethod();
		 System.out.println("***Method: "+method);
		 StringBuffer requestURL = req.getRequestURL();
		 System.out.println("***requestURL: "+requestURL);
		 String requestURI = req.getRequestURI();
		 System.out.println("***requestURI: "+requestURI);
		 String queryString = req.getQueryString();
		 System.out.println("***QueryString: "+queryString);
		 
		 String serverName = req.getServerName();
		 System.out.println("***ServerName: "+serverName);
		 String scheme = req.getScheme();
		 System.out.println("***Scheme: "+scheme);
		 int serverPort = req.getServerPort();
		 System.out.println("***ServerPort: "+serverPort);
		 String servletPath = req.getServletPath();
		 System.out.println("***ServletPath: "+servletPath);
		
		 String userName = req.getParameter("userName");
		 System.out.println("***userName: "+userName);
		 String password = req.getParameter("passWord");
		 System.out.println("***password: "+password);
		 
		 
	 }
	 
	 protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{
		 
	 }

}

4、页面请求

5、后台接收请求打印

***CharacterEncoding: null
***ContentType: null
***ContentLength: -1
***LocalAddr: 0:0:0:0:0:0:0:1
***Locale: zh_CN
***LocalName: 0:0:0:0:0:0:0:1
***LocalPort: 8080
***servletContext: org.apache.catalina.core.ApplicationContextFacade@4867dbd4
***ContextPath: /DemoServlet
***Protocol: HTTP/1.1
***Method: GET
***requestURL: http://localhost:8080/DemoServlet/myServlet2
***requestURI: /DemoServlet/myServlet2
***QueryString: userName=admin&passWord=admin
***ServerName: localhost
***Scheme: http
***ServerPort: 8080
***ServletPath: /myServlet2
***userName: admin
***password: admin

 

基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制方法。通过结合数据驱动技术与Koopman算子理论,将非线性系统动态近似为高维线性系统,进而利用递归神经网络(RNN)建模并实现系统行为的精确预测。文中详细阐述了模型构建流程、线性化策略及在预测控制中的集成应用,并提供了完整的Matlab代码实现,便于科研人员复现实验、优化算法并拓展至其他精密控制系统。该方法有效提升了纳米级定位系统的控制精度与动态响应性能。; 适合人群:具备自动控制、机器学习或信号处理背景,熟悉Matlab编程,从事精密仪器控制、智能制造或先进控制算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①实现非线性动态系统的数据驱动线性化建模;②提升纳米定位平台的轨迹跟踪与预测控制性能;③为高精度控制系统提供可复现的Koopman-RNN融合解决方案; 阅读建议:建议结合Matlab代码逐段理解算法实现细节,重点关注Koopman观测矩阵构造、RNN训练流程与模型预测控制器(MPC)的集成方式,鼓励在实际硬件平台上验证并调整参数以适应具体应用场景。
提供了一套完整的基于51单片机的DDS(直接数字频率合成)信号波形发生器设计方案,适合电子爱好者、学生以及嵌入式开发人员学习和实践。该方案详细展示了如何利用51单片机(以AT89C52为例)结合AD9833 DDS芯片来生成正弦波、锯齿波、三角波等多种波形,并且支持通过LCD12864显示屏直观展示波形参数或状态。 内容概述 源码:包含完整的C语言编程代码,适用于51系列单片机,实现了DDS信号的生成逻辑。 仿真:提供了Proteus仿真文件,允许用户在软件环境中测试整个系统,无需硬件即可预览波形生成效果。 原理图:详细的电路原理图,指导用户如何连接单片机、DDS芯片及其他外围电路。 PCB设计:为高级用户准备,包含了PCB布局设计文件,便于制作电路板。 设计报告:详尽的设计文档,解释了项目背景、设计方案、电路设计思路、软硬件协同工作原理及测试结果分析。 主要特点 用户交互:通过按键控制波形类型和参数,增加了项目的互动性和实用性。 显示界面:LCD12864显示屏用于显示当前生成的波形类型和相关参数,提升了项目的可视化度。 教育价值:本资源非常适合教学和自学,覆盖了DDS技术基础、单片机编程和硬件设计多个方面。 使用指南 阅读设计报告:首先了解设计的整体框架和技术细节。 环境搭建:确保拥有支持51单片机的编译环境,如Keil MDK。 加载仿真:在Proteus中打开仿真文件,观察并理解系统的工作流程。 编译与烧录:将源码编译无误后,烧录至51单片机。 硬件组装:根据原理图和PCB设计制造或装配硬件。 请注意,本资源遵守CC 4.0 BY-SA版权协议,使用时请保留原作者信息及链接,尊重原创劳动成果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值