#知识小点:

防止乱码的字符集的设置:

request.setCharacterEncoding():确定从请求端发送到给服务器的编码是汉字字符集。该方法对get方法

无效,只对post方法有效。若要对get方法有效,则要在server.xml指定。

response.setCharacterEncoding():用来服务器给客户端的编码。或者设置response.setContentType()

方法来设置Http响应的编码。

说明:一般默认是按照iso8859-1解码,这个只支持英文,不支持中文,所以一般支持中文要改为utf-8。

----------------------------------------------------------------------------------

转发和重定向:转发,只能在当前项目工程或者站点转发,一次请求和一次响应,重定向是两次请求,耗时相对

较长,所以一般既能用转发,又能够用重定向的话,就用重定向,但是如果要跳转到其它站点,比如百度,则不

能用转发,只能用重定向。

----------------------------------------------------------------------------------

get和post使用场景: ...

参看 https://blog.csdn.net/shangrila_kun/article/details/83658646

-----------------------------------------------------------------------------------

#登录程序方案一:

servlet(session和转发、重定向)

LoginServlet.java
 package web;

 import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* s1:设置请求端字符编码为utf-8
* s2:从前端页面获取请求参数
* s3:如果"king".equals(uname) && "test".equals(pwd)为true
* 则表示之前登录过的,则获取其session对象(getSession方法),并绑定它的值,
* 并重定向到welcom.jsp, 否则,在请求端绑定值并给出错误提示,
* 并转发到"login.jsp";
* */
public class LoginServlet extends HttpServlet { @Override
protected void service(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException,
IOException {
request.setCharacterEncoding("utf-8"); //读取用户名和密码
String uname = request.getParameter("uname");
String pwd = request.getParameter("pwd"); if ("king".equals(uname) && "test".equals(pwd)) {
//说明之前登录了,则获取和绑定session对象,并重定向到welcome.jsp
HttpSession session = request.getSession();
session.setAttribute("user", uname);
response.sendRedirect("welcome.jsp"); //重定向要保持同一站点
} else {
//request.setAttribute();它与转发联用的,并且能用于页面传值
request.setAttribute("login_failed","用户名或密码错误!");
request.getRequestDispatcher("login.jsp").forward(request,response); }
}
}

welcome.jsp

 <%
Object obj = session.getAttribute("user");
if(obj == null){
response.sendRedirect("login.jsp");
return;
}
%>
<%@ page pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<html>
<head> </head>
<body style="font-size:30px;">
<h1 align="center" style="color:red;">恭喜你,登录成功!</h1>
<%
System.out.println("登录成功...");
%>
</body>
</ht

login.jsp

 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="login" method="post">
<fieldset>
<legend>登录</legend>
用户名:<input name="uname"/>
<%
String msg =(String)request.getAttribute("login_failed");
%>
<%=msg == null ? "" : msg%>
<br/>
密码:<input type="password" name="pwd"/><br/>
<input type="submit" value="确定"/>
</fieldset>
</form>
</body> </body>
</html>

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_2_5.xsd" version="2.5"> <servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>web.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>someServlet</servlet-name>
<servlet-class>web.SomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>someServlet</servlet-name>
<url-pattern>/some</url-pattern>
</servlet-mapping> </web-app>

登录实现之servlet和SpringMVC的更多相关文章

  1. 带着新人简单看看servlet到springmvc

    好久都没有写博客了,不是因为自己懒了,而是总感觉自己知道的只是太少了,每次想写博客的时候都不知道怎么下手,不过最近看到一篇博客说的是springmvc,给了我比较大的兴趣,感觉一下子对整个spring ...

  2. struts2,servlet和springmvc的单例多例问题

    struts2,servlet和springmvc的单例多例问题 原创 2017年06月12日 09:59:21 标签: struts2 / servlet / springmvc / 单例 / 多例 ...

  3. 文件上传(Servlet/Struts2/SpringMVC)

    文件下载(Servlet/Struts2)的链接:http://www.cnblogs.com/ghq120/p/8328093.html 文件上传 Servlet实现 要实现文件上传的功能,必须在f ...

  4. servlet到springmvc的演进

    1.简单看看servlet 1.1.servlet继承关系 先看看下面servlet的这个继承关系,有点印象即可(可以暂时忽略ServletConfig,这个接口就是让我们可以从web.xml文件中拿 ...

  5. 怎么实现登录之后跳转到登录之前的页面?SpringMVC+Freemarker

    项目中,想实现一个功能. 直接访问某个需要登录的url,比如/addArticle,可能会跳转到登录页面login.html. 登录成功之后,自动跳转到/addArticle这个登录前的页面,继续登录 ...

  6. 以登录实现理解Servlet+jsp+JavaBean开发

    写在前面:菜鸟拙见,望请纠正 学过servlet的都知道,书本上一直说servlet一直作为控制器使用,它不实现view层,也不做具体的事务处理,那servlet到底是干什么的哪?怎么合理的用它呐?? ...

  7. Servlet Struts2 SpringMVC 获取参数与导出数据 方法比较

    servlet中通过request.getParameter()从网页获取参数 通过request session servletContext几个域对象的setAttribute(String ,O ...

  8. Servlet和SpringMVC补课

    1.web.xml加载顺序 http://mianhuaman.iteye.com/blog/1105522 关键点:ServletContext -> context-param -> ...

  9. 登录页面练习servlet

    登录练习: 1创建登录页面 创建servlet进行登录页面请求 2点击登录完成操作 浏览器发送请求到服务器(用户信息+其他数据 )3服务器调用对应的servlet进行处理 设置响应编码格式 获取请求信 ...

随机推荐

  1. 【Java】-NO.11.Java.1.Log4j.1.001-【Log4j Manual】-

    1.0.0 Summary Tittle:[Java]-NO.11.Java.1.Log4j.1.001-[Log4j2 Manual]- Style:Java Series:Log4j Since: ...

  2. API 接口自动化测试框架

    转自: https://testerhome.com/topics/3455 前言 接口自动化逐渐成为各大公司投入产出最高的测试技术.但是如何在版本迅速迭代过程中提高接口自动化的测试效率,仍然是大部分 ...

  3. unity3d射线控制移动

    看看效果图 代码: using UnityEngine; using System.Collections; public class T2 : MonoBehaviour { // Use this ...

  4. 如何遍历tabcontrol控件的所有的tabpage中的所有控件

    foreach(Control c in tabControl1.TabPages)这个循环的意思是说,遍历tabControl1中所有的TabPages,TabPages是包含在tabControl ...

  5. apc

    转载(https://www.kancloud.cn/thinkphp/php-best-practices/40866) 使用 APC 在一个标准的 PHP 环境中,每次访问PHP脚本时,脚本都会被 ...

  6. tortoise svn中更改用户

    1. Open Windows Explorer.2. Right-click anywhere in the window.3. Click TortoiseSVN → Settings.4. Cl ...

  7. 在运行create_list.sh时候报错:AttributeError: 'module' object has no attribute 'LabelMap'

    Traceback (most recent call last):File "/opt/xuben-project/caffe/data/VOC0712/../../scripts/cre ...

  8. VC2012+QT新建一个控制台程序

    1.新建一个项目,选择控制台程序 2.下一步.project setting 可以包含模块,可以再这选择也可以之后选择 3.配置工程属性 1)需要源码的话添加VC++目录里的源目录 2)包含头文件   ...

  9. 强化学习--DeepQnetwork 的一些改进

    Double DQN 算Q值 与选Q值是分开的,2个网络. Multi-step Dueling DQN 如果更新了,即使有的action没有被采样到,也会更新Q值 Prioritized Reply ...

  10. Day8 面向对象

    一.面向对象和面向过程 各位,我们现在如果要将大象放冰箱,用面向过程怎么实现呢? 1.把大象放到冰箱里 第一步:把冰箱门打开 第二步:把大象放进去 第三步:把门关上 def open_fridge_d ...