JSP for query
1. JSP中部分常用标签:
Form.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Form</title>
<script type="text/javascript">
function check(){
username = document.login.hehe.value;
console.log(username);
if(username.length<6 || username.length>8){
alert("用户名长度不合适!");
return false;
}else{
return true;
}
}
</script>
</head>
<body>
<form action="/login" name="login" method="post">
各种表单元素
Username:<input type="text" name="hehe" value="hehe">
Password:<input type="password" name="pwd" value="pwd">
</form>
<form>
Username:<input type="text" name="hehe" value="hehe">
Password:<input type="password" name="pwd" value="pwd">
<input type="submit" name="SUMBIT" value="SUMBIT">
<input type="reset" name="hehe" value="RESET">
<input type="button" value="button" onclick="javascript:check()">
</form>
<form>
<input type="radio" name="sex" value="1" checked>男
<input type="radio" name="sex" value="2">女
</form>
<br>
<form>
<input type="checkbox" name="hobby" value="1">Book
<input type="checkbox" name="hobby" value="2">Chess
<input type="checkbox" name="hobby" value="3">Movie
</form>
<select name="City">
<option value="1" selected>Tianjin</option>
<option value="2">Beijing</option>
<option value="3">Shanghai</option>
<option value="4">Xi'an</option>
<option value="5">Tangshan</option>
</select>
<form>
<textarea name="文本域" cols="10" rows="10">
默认文本
</textarea>
</form>
</body>
</html>
----------------------------------------------------------------------------------------------------------------
2. <jsp:forward>和response.sendRedirect()异同:
<%
String username = request.getParameter("username");
String userpass = request.getParameter("password");
if ("zhang".equals(username) && "123".equals(userpass)){
%>
<jsp:forward page="success.jsp"/>
<%
} else {
%>
<jsp:forward page="index.jsp"/>
<%
}
%>
<%
String username = request.getParameter("username");
String userpass = request.getParameter("password");
if ("zhang".equals(username) && "123".equals(userpass)){
response.sendRedirect("success.jsp");
} else {
response.sendRedirect("index.jsp");
}
%>
相同:均导向同一目标文件;
不同:1) <jsp:forward>属于一次请求,服务器端跳转,地址栏不发生变化; 而response.sendRedirect()导致二次请求,地址栏发生变化。
2) 通过<jsp:forward>方式跳转到目标文件后,request中的对象仍起作用;而通过response.sendRedirect()跳转到目标文件后,request中的对象失效。
----------------------------------------------------------------------------------------------------------------
3. <jsp:include>标签
效果同
<%@ include%>
但不同之处在于,include指令在编译期起作用,见目标文件预先加载进来;而<jsp:include>在运行期起作用,并且加载完后返回原文件继续执行。
----------------------------------------------------------------------------------------------------------------
4. <jsp:forward>和<jsp:include>的区别:
<jsp:forward>在导向目标文件后,不再返回;<jsp:include>在导向目标文件后,会返回原文件继续执行后续代码。
----------------------------------------------------------------------------------------------------------------
5. 要想使用JSTL,需要以下两点的配置:
1)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
2) 在JSP文件中声明标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
----------------------------------------------------------------------------------------------------------------
6. 四大内置对象:application,session,request,pageContext的作用范围
application:所有用户所共享的存储位置;
session:每个用户对应一个session,用于存储本用户相关的信息;
request:每次访问会对应一个request,request是为每个用户的每次请求所设置的存储信息位置;
pageContext:pageContext对应每次访问的每个页面。
经常使用session和request。
若多次访问之间共享信息则使用session;若需要在某次访问的多个页面之间共享信息,则使用request(比如,使用jsp:forwrad转向的文件和当前文件就属于同一次请求)
==>由以上对session和request的理解,可知用户登录信息应保存在session中。
<c:set var="user" scope="session" value="hehe"/>
----------------------------------------------------------------------------------------------------------------
7. 对Servlet的个人理解:
1) 可以通过在JSP页面中嵌入Java代码来完成相应的逻辑控制等。但大量的Java代码和JSP元素混合造成难以维护,所以应该将Java代码同JSP页面分离开来。而分离的Java代码负责请求控制等,形成现在的Servlet。Servlet具有JSP类似的功能:1, 接受请求; 2, 调用方法; 3, 响应用户。但二者的专注点不同,JSP专注页面数据展示而Servlet专注请求逻辑控制。
2) 根据1)的分析可知,此时MVC模型中的V和C成型。
3) 在Java EE中,Servlet和JSP同属于其中的Web层组件。
4) 通常在应用服务器中,均对Servlet有基本的实现,而且基本为HttpServelt实现。比如,在Tomcat容器中,相应的包为javax.servlet.*和javax.servlet.http.*,存在于servlet-api.jar中。
5) 在定义并使用自己的Servlet时,需要以下必要步骤:
1. extends HttpServlet
2. 重写doGet/doPost方法
3. 在web.xml中配置Servlet/使用注解@WebServlet
4. 使用定义的Servlet
Example:
1. extends HttpServlet + 2. 重写doGet/doPost方法
public class LoginServlet extends HttpServlet {
private static final Logger log = LoggerFactory.getLogger(LoginServlet.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
log.info("doGet implementation...");
req.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(req, resp);
log.info("doGet end");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
log.info("doPost implementation...");
String username = req.getParameter("username");
String password = req.getParameter("password");
UsernamePasswordToken token = new UsernamePasswordToken(username,password);
token.setRememberMe(true);
Subject subject = SecurityUtils.getSubject();
String error = null;
try {
subject.login(token);
} catch (UnknownAccountException e){
error = "Incorrect user/password";
} catch (IncorrectCredentialsException e){
error = "Incorrect user/password";
} catch (AuthenticationException e){
error = "other unknown error" + e.getMessage();
}
log.error(error);
if (error != null){
req.setAttribute("error",error);
req.getRequestDispatcher("/WEB-INF/jsp/login.jsp");
} else {
req.getRequestDispatcher("/WEB-INF/jsp/login_success.jsp");
}
log.info("doPost end");
}
}
3. 在web.xml中配置Servlet/使用注解@WebServlet
@WebServlet(name = "loginServlet", urlPatterns = "/login")
或者
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.chris.web.servlet.LoginServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
4. 使用定义的Servlet
<form action="${pageContext.request.contextPath}/login" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="登录">
</form>
----------------------------------------------------------------------------------------------------------------
8. JDBC操作数据库
个人理解JDBC:
JDBC是Java应用同数据库交互的一组标准接口,而各大数据库生产商则在JDBC接口的基础上实现各自的数据库驱动,比如com.mysql.jdbc.Driver。
JDBC操作数据库的传统套路如下:
1) 加载驱动程序:
Class.forName("com.mysql.jdbc.Driver");
2) 建立数据库连接:
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/shiro","root", "");
3) 创建语句对象:
String sql = "select * from users where username=? and password=?";
PreparedStatement ps = connection.prepareStatement(sql);
4) 变量赋值,替换?
ps.setString(1, "Chris");
ps.setString(2, "123");
5) 执行SQL语句并处理ResultSet
ResultSet resultSet = ps.executeQuery();
while (resultSet.next()){
System.out.println(resultSet.getString(2));
}
6) 关闭相关对象
resultSet.close();
ps.close();
connection.close();
由以上操作步骤可知,在Java应用中,若仅采用JDBC+相应驱动会造成代码的大量重复,并且也很难保证效率。所以在传统的J2EE项目中,采用EJB方式对JDBC封装,但使用起来仍然非常麻烦。由此催生了ORM框架,比如Hibernate, JPA等。Hibernate作为JDBC的轻量级封装,完全采用对象的思想,使得我们在与数据库交互时,更加方便。
----------------------------------------------------------------------------------------------------------------
9. 在JSP和Servlet中有几个地方可以设置编码,各个编码的功能也不一样。
各种编码一览
A. JSP/Servlet都有的编码设置
1. request.setCharacterEncoding("UTF-8")
2. response.setCharacterEncoding("UTF-8")
3. response.setContentType("text/html; charset=UTF-8");
4. response.setHeader("Content-Type", "text/html; charset=UTF-8");
B. JSP专有的编码设置
1. <%@ page pageEncoding="UTF-8" %>
2. <%@ page contentType="text/html; charset=UTF-8" %>
C. HTML页面中的编码设置
1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
----------------------------------------------------------------------------------------------------------------
10.
JSP for query的更多相关文章
- echarts实现条形图表
导入相应的包需要的文件;
- 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)
数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...
- topjui中datagrid增删改查
1.掌握datagrid的创建方式在html中直接定义与在js中定义 可参考easyui的官方文档:http://www.jeasyui.net/plugins/183.html 2.实现代码如下:重 ...
- 超全面的JavaWeb笔记day19<Service>
今日内容 l Service事务 l 客户关系管理系统 Service事务 在Service中使用ThreadLocal来完成事务,为将来学习Spring事务打基础! 1 DAO中的事务 在DAO中处 ...
- Day19 客户关系系统实战
day19 今日内容 Service事务 客户关系管理系统 Service事务 在Service中使用ThreadLocal来完成事务,为将来学习Spring事务打基础! 1 DAO中的事务 ...
- Combotreegrid中其它值获取
<input type="text" name="superior" data-toggle="topjui-combotreegrid&quo ...
- 使用Mybatis插件 PageHelper 模拟百度分页(Day_20)
生活中,要学会沉淀生命,沉淀心情,沉淀自己 模拟百度分页最终实现效果如图: 本篇博客运行环境 JDK8 + IntelliJ IDEA 2018.3 + Tomcat 8.5.31 准备好了我们就开始 ...
- JSP 标准标签库(JSTL)
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- java JSP(原创新手可进)
一. 同等编程方式jsp与asp.net的不同 app需要做一个简单网站,和几个用户推广链接,所以涉及到web这块开发,原本昨天想直接使用asp.net来做,但是之后放弃了这个想法,因为数据访问接口都 ...
随机推荐
- 【漫画解读】HDFS存储原理(转载)
以简洁易懂的漫画形式讲解HDFS存储机制与运行原理. 一.角色出演 如上图所示,HDFS存储相关角色与功能如下: Client:客户端,系统使用者,调用HDFS API操作文件;与NN交互获取文件元数 ...
- 一款jQuery特效编写的大度宽屏焦点图切换特效
一款jQuery编写的大度宽屏焦点图切换特效 焦点图显示区域有固定的宽度,当前显示宽度之外是一个半透明层显示的其它的焦点图片, 最好的是,此特效兼容IE6以及其它浏览器. 适用浏览器:IE6.IE7. ...
- 菜鸟的js学习笔记
学的越多感觉不会的越多.php+mysql学了点皮毛.知道搞web的是要会js的于是开始结合公司的项目开始学习js之旅(http://www.w3school.com.cn/b.asp) $(docu ...
- 集合删数 (vijos 1545) 题解
[问题描述] 一个集合有如下元素:1是集合元素:若P是集合的元素,则2 * P +1,4*P+5也是集合的元素,取出此集合中最小的K个元素,按从小到大的顺序组合成一个多位数,现要求从中删除M个数位上的 ...
- sql server查询数据库中所有表的行数
select a.name,b.rows from sysobjects a,sysindexes b where a.name = b.name order by b.rows desc
- C#高级功能(四)扩展方法和索引
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.扩展方法被定义为静态方法,但 ...
- ubuntu miss tool bar
reson: unity exception 1. open terminal: /usr/bin/**terminal** 2. run command on terminal: gsetting ...
- 浅谈Objective-C编译器指令
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
- JS对文本框值的判断
JS判断只能是数字和小数点(摘录自其它资料,在此发表只为个人以后使用查找方便) 1.文本框只能输入数字(不包括小数点) <input onkeyup="this.value=this. ...
- hdu 1434 幸福列车
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1434 幸福列车 Description 一批幸福的列车即将从杭州驶向幸福的终点站——温州,身为总列车长 ...