• javaweb jdbc实现简单的数据库基本操作和servlet的作用域以及jsp标签的使用


    一,工具类,分页类和连接数据库jdbc

    package com.direct.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    
    public class ConnCreate {
    	private static final String DRIVER="com.mysql.jdbc.Driver";
    	private static final String URL="jdbc:mysql://localhost:3306/countryside_buy?userUnicode=true&characterEncoding=utf-8";
    	private static final String USER="root";
    	private static final String PWD="123456";
    	static{
    		try {
    			Class.forName(DRIVER);
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    	//创建连接对象
    	public Connection createConn(){
    		Connection conn = null;
    		try {
    			conn = DriverManager.getConnection(URL, USER, PWD);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}
    	
    	//关闭连接
    	public void closeJ(Connection conn,PreparedStatement ps,ResultSet rs) throws SQLException{
    		if(rs!=null)  rs.close();
    		if(ps!=null)  ps.close();
    		if(conn!=null)  conn.close();
    	}
    		
    }
    

      

    package com.direct.util;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    
    public class JavaBeanPage<T> implements Serializable {
    
    	/*
    	 * javaBean 定义分页模型 泛型
    	 */
    	private int pagesize=3;//每页显示的条数
    	private int pageno=1;//当前页码
    	private int totalrecords;//总数据条数
    	private int totalpage;
    	private ArrayList<T> datalist = null;//当前页的数据
    	
    	public int getPagesize() {
    		return pagesize;
    	}
    	public void setPagesize(int pagesize) {
    		this.pagesize = pagesize;
    	}
    	public int getPageno() {
    		return pageno;
    	}
    	public void setPageno(int pageno) {
    		this.pageno = pageno;
    	}
    	public int getTotalrecords() {
    		return totalrecords;
    	}
    	public void setTotalrecords(int totalrecords) {
    		this.totalrecords = totalrecords;
    	}
    	public int getTotalpage() {
    		return totalpage;
    	}
    	// 设置总页数   总数据/每页条数
    	public void setTotalpage() {
    		if (totalrecords%pagesize==0) {
    			this.totalpage = totalrecords/pagesize;
    		}else {
    			this.totalpage = totalrecords/pagesize+1;
    		}
    	}
    	public ArrayList<T> getDatalist() {
    		return datalist;
    	}
    	public void setDatalist(ArrayList<T> datalist) {
    		this.datalist = datalist;
    	}
    	public JavaBeanPage(int pagesize, int pageno, int totalrecords,
    			int totalpage, ArrayList<T> datalist) {
    		super();
    		this.pagesize = pagesize;
    		this.pageno = pageno;
    		this.totalrecords = totalrecords;
    		this.totalpage = totalpage;
    		this.datalist = datalist;
    	}
    	public JavaBeanPage() {
    		super();
    	}
    
    }

    二,dao层对数据的连接和对数据的基本操作

    package com.direct.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Map;
    
    
    import com.direct.entity.User;
    import com.direct.util.ConnCreate;
    import com.direct.util.JavaBeanPage;
    
    public class UserJdbc {
    	
    	
    	//从数据中用sql语句分页,得到每页的显示数据集合对象
    	public JavaBeanPage<User> getlist(Map<String, Object> map){
    		JavaBeanPage<User> page = new JavaBeanPage<User>();
    		page.setPageno(Integer.parseInt((String) map.get("pageno")));      //设置当前页码
    	//	page.setPagesize((Integer)map.get("pagesize"));    //设置每页显示的数据数量
    		
    		page.setTotalrecords(getCount());//设置总数据条数
    		page.setTotalpage();//设置总页数
    /*		ArrayList<User> datalist = page.getDatalist();
    		System.out.println(datalist.get(0)); */
    		ConnCreate connCreate = new ConnCreate();
    		Connection conn = connCreate.createConn();
    		PreparedStatement ps = null;
    		ResultSet rs =null; 
    		//  查询起始位置    (当前页数-1)*每页显示的条数
    		int begin =(page.getPageno() -1)*page.getPagesize();
    		//查询每页显示条数
    		int end = page.getPagesize();
    		String sql = "select * from user limit  "+begin+" , "+end;
    		ArrayList<User> list = new ArrayList<User>();//临时存放user对象,最后传入page中的集合
    		
    		try {
    			ps = conn.prepareStatement(sql);
    			 rs = ps.executeQuery();
    			 while (rs.next()) {
    					User user= new User(rs.getInt("user_id"),
    							rs.getString("user_name"),
    							rs.getString("user_email"), 
    							rs.getString("user_password"),
    							rs.getString("user_telphone"),
    							rs.getInt("user_status"),
    							rs.getString("user_sex"));
    					//System.out.println(user);
    					list.add(user);
    			}
    			 page.setDatalist(list);
    			 
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}finally{
    			try {
    				connCreate.closeJ(conn, ps, rs);
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	
    		return page;
    	}
    	
    	//访问数据库得到数据的总条数
    	public int getCount(){
    		ConnCreate connCreate = new ConnCreate();
    		Connection conn = connCreate.createConn();
    		PreparedStatement ps = null;
    		ResultSet rs =null;
    		int count=0;
    		String  sql = "select count(user_id) as count from user";
    		try {
    		          ps = conn.prepareStatement(sql);
    		          rs = ps.executeQuery();
    		         while (rs.next()) {
    					count= rs.getInt("count");
    				}    
    		         // System.out.println("总数据条数:"+count);
    		          
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}finally{
    			try {
    				connCreate.closeJ(conn, ps, null);
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    		
    		return count;
    	}
    	
    	public ArrayList<User> qurey(String name,String pwd){
    		ConnCreate connCreate = new ConnCreate();
    		Connection conn = connCreate.createConn();
    		StringBuffer sql=new StringBuffer("select * from user where 1=1");
    		ArrayList<User>  uList=new ArrayList<User>();
    		PreparedStatement ps = null;
    		ResultSet rs = null;
    		if (name!=null&&!("").equals(name)&&pwd!=null&&!("").equals(pwd)) {
    			sql.append(" and user_name='"+name+"'");		
    			sql.append("  and  user_password='"+pwd+"'");
    		
    		try {
    			 ps=  conn.prepareStatement(sql.toString());
    			 rs = ps.executeQuery();
    			while (rs.next()) {
    				User user= new User(rs.getInt("user_id"),
    						rs.getString("user_name"),
    						rs.getString("user_email"), 
    						rs.getString("user_password"),
    						rs.getString("user_telphone"),
    						rs.getInt("user_status"),
    						rs.getString("user_sex"));
    				uList.add(user);
    				//System.out.println("list添加一个对象");
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}finally{
    			try {
    				connCreate.closeJ(conn, ps, rs);
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    		}				
    		return uList;	
    	}
    	//参数列表不同,不同的调用,应该用重载
    	public ArrayList<User> qurey(String name,int id){
    		ConnCreate connCreate = new ConnCreate();
    		Connection conn = connCreate.createConn();
    		StringBuffer sql=new StringBuffer("select * from user where 1=1");
    		ArrayList<User>  uList=new ArrayList<User>();
    		PreparedStatement ps = null;
    		ResultSet rs = null;
    		 if(name!=null&&!("").equals(name)){
    			sql.append(" and user_name='"+name+"'");	
    		}else if(id!=0){
    			sql.append(" and user_id='"+id+"'");	
    		}
    		try {
    			 ps=  conn.prepareStatement(sql.toString());
    			 rs = ps.executeQuery();
    			while (rs.next()) {
    				User user= new User(rs.getInt("user_id"),
    						rs.getString("user_name"),
    						rs.getString("user_email"), 
    						rs.getString("user_password"),
    						rs.getString("user_telphone"),
    						rs.getInt("user_status"),
    						rs.getString("user_sex"));
    				uList.add(user);
    				System.out.println("list添加一个对象");
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}finally{
    			try {
    				connCreate.closeJ(conn, ps, rs);
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}				
    		return uList;	
    	}
    	
    
    	//增
    	public Boolean addUsers(User uent){
    		Boolean bool = false;
    		ConnCreate connCreate = new ConnCreate();
    		Connection conn = connCreate.createConn();
    		PreparedStatement ps = null;
    		String sql = "insert into user(user_name,user_email,user_password,user_telphone,user_status,user_sex) values(?,?,?,?,?,?)";
    		try {
    			ps = conn.prepareStatement(sql);
    			ps.setString(1, uent.getUname());
    			ps.setString(2, uent.getUemail());
    			ps.setString(3, uent.getUpwd());
    			ps.setString(4, uent.getUtel());
    			ps.setInt(5, uent.getUsatus());
    			ps.setString(6, uent.getUsex());
    			int temp = ps.executeUpdate();
    			if (temp>0) {
    				System.out.println("添加成功!!!");
    				bool = true;
    			}		
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}finally{
    			try {
    				connCreate.closeJ(conn, ps, null);
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}			
    		return bool;
    	}
    	// 改
    	public Boolean changeUser(int id,User uent){
    		Boolean bool = false;
    		ConnCreate connCreate = new ConnCreate();
    		Connection conn = connCreate.createConn();
    		PreparedStatement ps=null;
    		//update user set user_name=?,user_email=?,user_password=?,user_telphone=?,user_sex=? where name ='star' 
    		StringBuffer sql = new StringBuffer("update user set user_name=?,user_email=?,user_password=?,user_telphone=?,user_sex=? where user_id= '"+id+"'");
    		try {
    			ps = conn.prepareStatement(sql.toString());		
    			ps.setString(1, uent.getUname());
    			ps.setString(2, uent.getUemail());
    			ps.setString(3, uent.getUpwd());
    			ps.setString(4, uent.getUtel());
    			ps.setString(5, uent.getUsex());		
    			int rows = ps.executeUpdate();
    			if(rows>0){
    				System.out.println("修改成功!!!");
    				bool=true;
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}finally{
    			try {
    				connCreate.closeJ(conn, ps, null);
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}				
    		return bool;	
    	}
    	//删
    	public Boolean deleteUser(int id){
    		Boolean bool = false;
    		ConnCreate connCreate = new ConnCreate();
    		Connection conn = connCreate.createConn();
    		PreparedStatement ps = null;
    		String sql = "delete from user where user_id='"+id+"'";
    		try {
    			ps = conn.prepareStatement(sql);
    			int rows = ps.executeUpdate();
    			if (rows>0) {
    				System.out.println("删除成功!!!");
    				bool = true;
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}finally{
    			try {
    				connCreate.closeJ(conn, ps, null);
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}		
    		return bool;
    	}
    	
    /*	public static void main(String[] args) {
    		ArrayList<User> list = new UserJdbc().qurey("小白","123456");
    		System.out.println(list.size());
    		
    		User user = new User(1, "小蓝", "nn147552384@163.com", "435256", "13996932845", 0, "女");
    		new UserJdbc().addUsers(user);
    		System.out.println(new UserJdbc().getCount());
    		//new UserJdbc().getlist();
    	}*/
    }
    

      三,service层的接受前台数据和响应

    package com.direct.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.ServletContext;
    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 com.direct.dao.UserJdbc;
    import com.direct.entity.User;
    import com.direct.util.JavaBeanPage;
    
    public class UserServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request, response);
    	}
    
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");// 设置字符编码
    		response.setContentType("text/html;charset=utf-8");// 设置输出内容的类型及字符编码
    		response.setCharacterEncoding("utf-8");
    
    		/*
    		 * 三种作用域 
    		 * request 一次请求 只能用forward转换页面 
    		 * session 一次会话 在浏览器中可以访问,关闭浏览器重开不能
    		 * application 一直 关闭浏览器后在打开,访问得到 (一般用于网站访问人数的数据)
    		 */		
    		String username = request.getParameter("username");// 获取值 表单值
    		String[] values = request.getParameterValues("hobby");// 获取数组 表单复选框
    		String hob = "";
    		for (int i = 0; i < values.length; i++) {
    			hob+=values[i]+",";
    		}
    		
    		HttpSession session = request.getSession();
    		session.setAttribute("sname", "dgdfhhh");
    		session.setAttribute("spwd", "fugfgh");
    		session.setMaxInactiveInterval(10);//设置最大存在时间  单位秒
    		session.invalidate();//销毁
    		session.removeAttribute("sname");//移除存放的值
    
    		ServletContext application = this.getServletContext();
    		application.setAttribute("aname", "fyjhjhgjfk");
    		application.setAttribute("apwd", "dfjgfhdf");
    		
    		/*
    		 * 内部跳转 请求转发 forward() 一次请求 外部跳转 重定向 sendRedirect() 两次请求
    		 */
    		// request.getRequestDispatcher("MyJsp.jsp").forward(request, response);
    		PrintWriter out = response.getWriter();// 返回PrintWriter 输出流对象
    //		out.print("sdfniodg");//响应给前台
    //		response.sendRedirect("MyJsp.jsp");// 重定向跳转页面
    		String op = request.getParameter("op");
    		
                   if(("page").equals(op)){
    			//op=page&pageno=1
    			String pageno = request.getParameter("pageno");//当前页码
    			System.out.println(pageno+"pageno");
    			Map< String, Object> map = new HashMap<String, Object>();
    			map.put("pageno", pageno);
    			//map.put("pagesize", 3);
    			UserJdbc userJdbc = new UserJdbc();
    			JavaBeanPage<User> pagelist = userJdbc.getlist(map);
    			request.setAttribute("nowdate", new  Date());//存入当前时间
    			request.setAttribute("pagelist", pagelist);//存入request属性值
    			//request.getRequestDispatcher("pagelist.jsp").forward(request, response);
    			request.getRequestDispatcher("jstl.jsp").forward(request, response);
    		} else {
    			System.out.println("--------------else----------");
    		}
    		
    
    	}
    
    }
                    

      四,jsp页面取数据和显示的几种方式

      jstl中 c 标签和 fmt 标签的简单使用。和实现真分页。以及el表达式的简单运用

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@taglib  prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib  uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'jstl.jsp' starting page</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
        <table cellpadding="0" cellspacing="0" width="50%"  align="center">
            		<tr> <th>编号</th>
            		<th>ID</th>
            		<th>用户名</th>
            		   <th>邮件</th>
            		   <th>电话</th>
            		   <th>密码</th>
            		   <th>性别</th>
            		</tr>
            		        <c:forEach   items="${pagelist.datalist}"  var="item"  varStatus="status">
    	        		        <tr>
    	        		        			<td>${status.index }</td>
    	        		        		    <td>${item.uid }</td>
    				        			<td>${item.uname }</td>
    				        		        <td>${item.uemail }</td>
    				        		        <td> ${item.utel }</td>
    				        		        <td>${item.upwd }</td>
    				        		        <td>${item.usex }</td>
    	        		        </tr>
            		        </c:forEach>
            		        
            		         <tr>
            		         		<td></td>
    			        		         <td>当前页:${pagelist.pageno } /总页数:${pagelist.totalpage }</td>
    			        		         <td><a href="UserServlet?op=page&pageno=1"> 首页</a></td>
    			        		         <td><a href="UserServlet?op=page&pageno=${pagelist.pageno>1?pagelist.pageno-1:pagelist.pageno}">上一页</a></td>
    			        		         <td><a href="UserServlet?op=page&pageno=${pagelist.pageno<pagelist.totalpage?pagelist.pageno+1:pagelist.totalpage}">下一页</a></td>
    			        		         <td><a href="UserServlet?op=page&pageno=${pagelist.totalpage }">尾页</a></td>
            		         </tr>
             </table>
             <c:set    value="99"  var="score"></c:set>
              成绩:<c:out  value="${score}"></c:out>
             <c:if test="${score>80}">成绩很优秀   </c:if><br/>
             <c:set  value="6" var="grade" ></c:set>
             <select name="grade">
                  <c:choose>
    		             <c:when test="${grade==1}">
    		            		 <option value="1">倔强青铜</option>
    		             </c:when>
    		             <c:when test="${grade==2}">
    		             		<option value="2">秩序白银</option>
    		             </c:when>
    		             <c:when test="${grade==3}">
    		           			 <option value="3">荣耀黄金</option>
    		             </c:when>
    		              <c:when test="${grade==4}">
    		            		 <option value="4">尊贵铂金</option>
    		             </c:when>
    		              <c:when test="${grade==5}">
    		             		<option value="5">永恒钻石</option>
    		             </c:when>
    					<c:otherwise >
    							<option >王者</option>
    					</c:otherwise>
                 </c:choose>
             </select>
             <br/>
             <c:set value="语文,数学,英语,C++,C#,JAVA,PHP"  var="subject" scope="session"></c:set>
             <c:forTokens items="${subject}" delims=","  begin="0" end="2"   var="ke">
             		<c:out value="${ke}"></c:out><br/>
             </c:forTokens>
             <br/>
    		当前时间:<fmt:formatDate value="${nowdate}" pattern="yyyy年MM月dd日 HH:mm:ss"/>         
    		<br/>
    		<h3>数字格式化:</h3>
    			<c:set var="balance" value="120000.2309" />
    			<p>格式化数字 (1): <fmt:formatNumber value="${balance}" 
    			            type="currency"/></p>
    			<p>格式化数字 (2): <fmt:formatNumber type="number" 
    			            maxIntegerDigits="3" value="${balance}" /></p>
    			<p>格式化数字 (3): <fmt:formatNumber type="number" 
    			            maxFractionDigits="3" value="${balance}" /></p>
    			<p>格式化数字 (4): <fmt:formatNumber type="number" 
    			            groupingUsed="false" value="${balance}" /></p>
    			<p>格式化数字 (5): <fmt:formatNumber type="percent" 
    			            maxIntegerDigits="3" value="${balance}" /></p>
    			<p>格式化数字 (6): <fmt:formatNumber type="percent" 
    			            minFractionDigits="10" value="${balance}" /></p>
    			<p>格式化数字 (7): <fmt:formatNumber type="percent" 
    			            maxIntegerDigits="3" value="${balance}" /></p>
    			<p>格式化数字 (8): <fmt:formatNumber type="number" 
    			            pattern="###.###E0" value="${balance}" /></p>
    			<p>美元 :
    			<fmt:setLocale value="en_US"/>
    			<fmt:formatNumber value="${balance}" type="currency"/></p>

    <hr/>
    <%--el表达式的使用:
    等于:== eq
    不等于:!= ne
    大于等于:>= ge
    小于等于:<= le
    小于:< lt
    大于:> gt
    逻辑与: && and
    逻辑或: || or
    逻辑非: ! not
    是否为空:empty
    --%>

    总条数:${requestScope.pagelist.totalrecords }<br/>
    等于:${pagelist.pageno eq pagelist.pagesize }<br/>
    不等于:${pagelist.pageno ne pagelist.pagesize }<br/>

      </body>
    </html>
    

     jstl中标签的使用,c,fmt,functions。

    服务器开启后,直接访问本页面即可

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@  taglib  uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions"  prefix="fn"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'jstlApply.jsp' starting page</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
        <!-- 1根据不同年龄段 判断人群类别。 少年 青年 …….. (多种方式实现)
    	         2使用forTokens  拆分遍历数据。(blue,red,green|yellow|pink,black|white)
                 3获得时间:格式化输出年 月 日 时 分 秒 AM /PM
                 4得到一个数字 已不同的方式输出为金额格式  (美元 人民币)
         -->
         <c:set  value="25"  var="age"></c:set>
         <c:out value="${age}"></c:out><br/>
         <hr/>
      c:choose和c:when方式:  
        <c:choose>
        	<c:when test="${age<=10}">儿童</c:when>
        	<c:when test="${age<=30&&age>10}">青年</c:when>
        	<c:when test="${age<=50&&age>30}">中年</c:when>
        	<c:when test="${age>50}">老年</c:when>
        </c:choose><br/>
      c:if方式:  
       <c:if test="${age<=10}">儿童</c:if>
        <c:if test="${age<=30&&age>10}">青年</c:if>
        <c:if test="${age<=50&&age>30}">中年</c:if>
        <c:if test="${age>50}">老年</c:if><br/>
           <hr/>
        <c:set value="blue,red,green|yellow|pink,black|white"  var="str"></c:set>
        原字符串:<c:out value="${str}"></c:out><br/>
        c:forTokens:
        <c:forTokens items="${str}" delims=","  var="color">
            <c:forTokens items="${color}" delims="|" var="co">
        	${co}
            </c:forTokens>
        </c:forTokens>
             <hr/>
        <c:set   value="<%=new Date() %>"  var="nowdate"></c:set><br/>
        <fmt:formatDate value="${nowdate}" pattern="yyyy年MM月dd日  HH:mm:ss a" var="date"/>
        fmt:formatDate:<c:out value="${date}"></c:out><br/>
        <c:set value="3568" var="num"></c:set>
         fmt:formatNumber:
           <fmt:formatNumber   type="currency" value="${num}" ></fmt:formatNumber><br/>
    		<fmt:formatNumber currencySymbol="$"  value="${num}"></fmt:formatNumber><br/>
            <fmt:formatNumber  currencyCode="$" value="${num}"></fmt:formatNumber><br/>
          <!--  jstl函数:使用
    					5 判断字符串A中是否有存在子串B (忽略大小写/不忽略大小写);
    					6 集合中装有多个字符串,遍历 输出以指定字符结尾的 字符串;
    					7集合中装有多个字符串,输出不同字符串中指定字符出现的位置。
    					8将多个字符串 拼接为一个字符串。
    					9截取返回 字符串 指定范围、 之前、 之后的内容。
    					10字符串的替换操作。
             -->
    		<% String str1 = "javascripet";
    				String str2 = "vAsc";
    				ArrayList liststr =  new ArrayList();
    				liststr.add("bluejstl");
    				liststr.add("redjstld");
    				liststr.add("yelllowjstl");
    				liststr.add("blackjstla");
    				liststr.add("bluejstl");
    				request.setAttribute("liststr",liststr);
    		 %>
    		 jstl:function<br/>
    		${fn:contains(str1,str2) }<br/>
    		${fn:containsIgnoreCase(str1,str2) }<br/>
    		endsWith:
    		<c:forEach items="${liststr}" var="strl"  varStatus="status">
    			${status.index}
    		    ${strl}
    			${fn:endsWith(strl, "jstl")} <%="," %><br/>
    		</c:forEach><br/>
    	indexOf:	<c:forEach items="${liststr}" var="strof">
    			 ${strof}
    			 ${fn:indexOf(strof, 'j')}
    			 <%="," %>
    		</c:forEach><br/>
         <hr/>
    		<c:set var="string1" value="I am from google"/>
    		<c:set var="string2" value="${fn:replace(string1, 'google', 'runoob')}" />
    		<p>replace替换后的字符串 : ${string2}</p>
    		     <hr/>
    		<c:set var="string1" value="www runoob com"/>
    		<c:set var="string2" value="${fn:split(string1, ' ')}" />
    		<%
    				String[] arr = {"This","is","array","string"};
    				request.setAttribute("arr",arr);
    		 %>
    		 <c:set value="${arr}" var="array"></c:set>
    		 arr使用join连接: ${fn:join(array,'-') }
    		<c:set var="string3" value="${fn:join(string2, '-')}" /><!-- string2是字符串数组 -->
    		<p>字符串为 : ${string3}</p>
    		<c:set var="string4" value="This is first String."/>
    		<c:set var="string5" value="${fn:substring(string4, 5, 15)}" />
    		<p>生成的子字符串为 : ${string5}</p>
    		<c:set var="string6" value="${fn:substringAfter(string4, 'is')}" />
    		<p>After生成的子字符串 : ${string6}</p>
    		<c:set var="string7" value="${fn:substringBefore(string4,  'first')}" />
    		<p>Before生成的子字符串 : ${string7}</p>
    
      </body>
    </html>

     五,web.xml中的配置,以及使用配置文件实现初始化数据

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <servlet>
        <description>This is the description of my J2EE component</description>
        <display-name>This is the display name of my J2EE component</display-name>
        <servlet-name>UserServlet</servlet-name>
        <servlet-class>com.direct.servlet.UserServlet</servlet-class>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>UserServlet</servlet-name>
        <url-pattern>/UserServlet</url-pattern>
      </servlet-mapping>
      
      <servlet>
    		  <servlet-name>config_jsp</servlet-name>
    		     <jsp-file>/config.jsp</jsp-file>
    		  <init-param>
    		        <param-name>configFile</param-name>
    		            <param-value>confi.txt配置文件的信息</param-value>
    		  </init-param>
      </servlet>
      <servlet-mapping>
      	    <servlet-name>config_jsp</servlet-name>
                <url-pattern>/conf.jsp</url-pattern>
      </servlet-mapping>
    
      
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

      六,web.xml 中初始化的数据在发布服务器后可直接访问取数据

    config.jsp

    访问   http://localhost:8082/webProject/conf.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'config.jsp' starting page</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
      
      			配置文件名:<%=config.getInitParameter("configFile") %>
      </body>
    </html>
    

      

  • 相关阅读:
    基本技能训练之线程
    关于UEditor的使用配置(图片上传配置)
    PAT 乙级练习题1002. 写出这个数 (20)
    codeforces 682C Alyona and the Tree DFS
    codeforces 681D Gifts by the List dfs+构造
    codeforces 678E Another Sith Tournament 概率dp
    codeforces 680E Bear and Square Grid 巧妙暴力
    codeforces 678D Iterated Linear Function 矩阵快速幂
    codeforces 679A Bear and Prime 100 交互
    XTUOJ 1248 TC or CF 搜索
  • 原文地址:https://www.cnblogs.com/nn369/p/8044116.html
Copyright © 2020-2023  润新知