关于servlet中前台数据后台提取功能的一点心得

<form id="login" method="post" action="login">
用户名:<input type="text" name="username"/><br/>
密&nbsp;&nbsp码:<input type="text" name="pass"/><br/>
<input type="submit" value="登录"/>

</form>

简单的jsp页面,action功能对应的xml中/login   同时xml里面需要定义俩个  如下

<servlet>
<!-- 指定Servlet的名字,
相当于指定@WebServlet的name属性 -->
<servlet-name>login</servlet-name>
<!-- 指定Servlet的实现类 -->
<servlet-class>lee.LoginServlet</servlet-class>
</servlet>
<!-- 配置Servlet的URL -->
<servlet-mapping>
<!-- 指定Servlet的名字 -->
<servlet-name>login</servlet-name>
<!-- 指定Servlet映射的URL地址,
相当于指定@WebServlet的urlPatterns属性-->
<url-pattern>/login</url-pattern>
</servlet-mapping>




然后LoginServlet类取得相关数据。代码如下

package lee;


import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;


import java.sql.*;


/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
@WebServlet(name="login"
, urlPatterns={"/login"})
public class LoginServlet extends HttpServlet
{
//响应客户端请求的方法
@Override
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,java.io.IOException
{
String errMsg = "";
//Servlet本身并不输出响应到客户端,因此必须将请求转发
RequestDispatcher rd;
request.setCharacterEncoding("gb2312");




//获取请求参数
String username = request.getParameter("username");
//String   username = new String(username1.getBytes("iso8859-1"),"gbk");
String pass = request.getParameter("pass");
try
{
//Servlet本身,并不执行任何的业务逻辑处理,它调用JavaBean处理用户请求
DbDao dd = new DbDao("com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/javaee","root","root");
//查询结果集
ResultSet rs = dd.query("select passwd from user_table "
+ "where username = ?", username);
if (rs.next())
{
//用户名和密码匹配
if (rs.getString("passwd").equals(pass))
{
//获取session对象
HttpSession session = request.getSession(true);
//设置session属性,跟踪用户会话状态
session.setAttribute("username" , username);
//获取转发对象
rd = request.getRequestDispatcher("/welcome.jsp");
//转发请求
rd.forward(request,response);
}
else
{
//用户名和密码不匹配时
errMsg += "您的用户名密码不符合,请重新输入";
}
}
else
{
//用户名不存在时
errMsg += "您的用户名不存在,请先注册";
}
}
catch (Exception e)
{
e.printStackTrace();
}
//如果出错,转发到重新登录
if (errMsg != null && !errMsg.equals(""))
{
rd = request.getRequestDispatcher("/login.jsp");
request.setAttribute("err" , errMsg);
rd.forward(request,response);
}
}
}

 

数据库匹配成功后,跳入welcome.jsp页面。


如此完成servlet功能。



按照我之前给出的代码,前端可以通过Vue绑定事件来向后台提交数据后台需要使用Servlet来处理这些请求。在Servlet,可以通过以下方法来获取前端提交的数据: 1. 使用request.getParameter()方法获取提交的参数值。例如,如果前端提交的数据是一个表单,可以通过以下代码来获取表单的某个字段值: ``` String fieldValue = request.getParameter("fieldName"); ``` 2. 如果前端提交的数据是一个JSON格式的数据,可以使用request.getInputStream()方法获取请求的输入流,然后使用IO流将输入流数据读取出来。例如,如果前端提交的数据是以下JSON格式的数据: ``` { "name": "张三", "age": 18 } ``` 可以使用以下代码来获取该数据: ``` InputStream inputStream = request.getInputStream(); byte[] buffer = new byte[1024]; int length = 0; StringBuilder sb = new StringBuilder(); while ((length = inputStream.read(buffer)) != -1) { sb.append(new String(buffer, 0, length)); } String jsonStr = sb.toString(); ``` 3. 如果前端提交的数据是一个FormData格式的数据,可以使用request.getPart()方法获取表单的某个字段值。例如,如果前端提交的数据是一个包含文件上传的表单,可以使用以下代码来获取文件的输入流: ``` Part filePart = request.getPart("file"); InputStream fileInputStream = filePart.getInputStream(); ``` 以上是获取前端数据的三种常见方式,具体的获取方式需要根据前端提交的数据格式进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值