栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JSP基础入门MVC框架从无到有

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSP基础入门MVC框架从无到有

目录
  • 导语:什么是JSP?
  • 一、简单HTML语言网页实现
  • 二、实现猜测数字界面(内置对象中session的基本运用)
    • 1、实现界面:
    • 2、代码:
    • 3、什么是session?
  • 三、计算一个梯形的面积(javabean的编译)
  • 四、自主提交数据,并对数据进行求和和排序输出(servelet+jsp页面)
    • 1、实现界面:
    • 2、代码:
    • 3、什么是servelet?
  • 五、实现一个简单的计(servelet+jsp+javabean)
    • 1、实现界面:
    • 2、代码:
    • 3、为什么要同时使用bean和servelet实现页面功能?
  • 六、什么是Spring-MVC框架?


导语:什么是JSP?

JSP,JavaServer Pages的缩写,是基于Java Servelet以及整个Java体系的上Web开发技术,web开发干嘛的?在学习之前我们可以这么理解,web开发就是实现网页的技术呀,jsp是web开发要学习的HTML、CSS、Javascript中的三门语言之一,总之在前期的学习中你要实现的学习成果便是具有增删查改功能的网页系统,放大来看一个网页具有两个组成部分,首先是前台的网页显示,涉及到的是实现技术是jsp页面的编写,所谓jsp页面的组成是在传统的HTML页面中加入java程序片段和一些标记,这些标记就叫做jsp标记,后台数据库连接对页面产生的数据进行存储,这里笔者作为jsp的初学者手把手实现一个初级的网页作为学习jsp入门的验收成果,分单个板块将jsp的入门知识点用最直白(小白的我都学会了聪明的你也一定行)的方式讲清楚。


一、简单HTML语言网页实现

HTML,Hyper Text Markup Language(超文本标记语言)是用来编写html页面(俗称的网页)的语言。
HTML不体现数据的组织结构,只是描述数据的显示格式或提交方式。HTML语言中的标记都由浏览器负责解释执行,每个标记(不区分大小写)都用于体现怎样显示数据或怎样提交数据。
下面做个简单实现:
1、html语言段



hello

jsp


在这个很简单的HTML语言中可以清晰的看到标记语言都是成对出现的,标记不区分大小写,都用于体现怎样显示或者提交想要实现的数据。
2、具体实现步骤
1、启动tomcat并添加文件

2、在浏览器中测试tomcat是否启动成功以下是成功界面


3、测试结果

二、实现猜测数字界面(内置对象中session的基本运用)

在第一部分内容里我们初步实现了基本在页面之间实现数据信息的传递,实现页面与服务对象的简单交互,在接下来的学习中我们进一步实现一个简单的登录页面来认识在信息传值过程中一个很重要的session函数。

1、实现界面:



2、代码:

1.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
 
 

随机分给了一个1到100之间的数,请猜! <% int number=(int)(Math.random()*100)+1; session.setAttribute("count",new Integer(0)); session.setAttribute("saveGuessNumver",new Integer(number)); //保存需要猜测的数 %>
输入猜测:

small.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>

   
 
<%  Integer userGuess=(Integer)session.getAttribute("userGuess");
%>

<%= userGuess %>数小了,请再猜:

large.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>

  
 
<%  Integer userGuess=(Integer)session.getAttribute("userGuess");
%>

<%= userGuess %>数大了,请再猜:

success.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<%  Integer count = (Integer)session.getAttribute("count");
    Integer num = (Integer)session.getAttribute("saveGuessNumver");
%>
 


恭喜猜对了,
共猜了<%=count%>次。
这个数字就是<%=num%>。

judge.jsp

<%   String str=request.getParameter("guess");
     if(str==null||str.length()==0) {
         response.sendRedirect("1.jsp");
     }
     else {
        int userGuessNumber=Integer.parseInt(str);//用户的猜测
        session.setAttribute("userGuess",new Integer(userGuessNumber));
        Integer saveGuessNumver=
        (Integer)session.getAttribute("saveGuessNumver");
        if(userGuessNumber == saveGuessNumver.intValue()) {
           int n=((Integer)session.getAttribute("count")).intValue();
           n=n+1;
           session.setAttribute("count",new Integer(n));
           response.sendRedirect("success.jsp");
        } 
        else if(userGuessNumber > saveGuessNumver.intValue()){
           int n=((Integer)session.getAttribute("count")).intValue();
           n=n+1;
           session.setAttribute("count",new Integer(n));
           response.sendRedirect("large.jsp");
        }
        else if(userGuessNumber < saveGuessNumver.intValue()) {
           int n=((Integer)session.getAttribute("count")).intValue();
           n=n+1;
           session.setAttribute("count",new Integer(n));
           response.sendRedirect("small.jsp");
        }
     }
%>

3、什么是session?

首先我们要弄懂一个理念,在jsp的实际应用中,所有涉及逻辑的处理都是由java设计语言完成的也就是说我们要完成涉及逻辑的处理是需要编写java片段完成的,在上面的代码中我们可以看到,涉及到对数值大小的一个判断以及随机数值的生成,但是是由纯jsp页面组成的,虽然没有涉及到javabean编写,但是我们使用了session对象,这就涉及到jsp的内置对象概念,内置对象就是不用声明就可以直接使用的java片段,我们可以理解为jsp语言封装了基本使用的java片段,提供接口供我们直接调用完成问题的逻辑处理

三、计算一个梯形的面积(javabean的编译)

在对javabean的学习中,首先我们先对javabean有一个简单的认识,javabean就是java程序片段在经过编译之后获得能够在jsp页面当中使用的字节码文件,接下来就直截了当的介绍一下怎么生成字节码文件。

1、调用运行窗口cd到当前java文件所在的目录下,使用命令javac编译代码生成字节码文件。
打开运行窗

1.2、编译成功

1.3、成功生成字节码文件界面

实现页面:

first.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
//定义界面格式

<% request.setCharacterEncoding("utf-8");
%>//编码格式utf-8

//在js页面使用usebean申明使用的bean信息
//建立表单
请你分别输入梯形的上底下底和高: 上底: 下底: 高:

second.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
//界面格式
<% request.setCharacterEncoding("utf-8");
%>
//编码格式

//声明使用的bean的信息 scope:bean的有效范围 session、request、session、application、


//获得已定义好的bean的属性值,在使用setbean之前必须使用usebean申明使用的bean
梯形的上底下底和高为:
//getproperty设置bean的属性
,
,
.

梯形的面积是:

ladder.java

package red.star;
//包
//bean中设置数据的格式
public class ladder{
   double sideA=-1,sideB=-1,sideC=-1;
   String area;
   //set定义属性值
   public void setSideA(double a) {
      sideA=a;
   }
   //get设置属性值
   public double getSideA() {
      return sideA;
   }
   public void setSideB(double b) {
      sideB=b;
   }
   public double getSideB() {
      return sideB;
   }
   public void setSideC(double c) {
      sideC=c;
   }
   public double getSideC() {
      return sideC;
   }
//定义实现面积的函数
   public String getArea() {
         double result=((sideA+sideB)*sideC)/2.0;
         area = String.format("%.2f",result);
      return area;
   }
}

四、自主提交数据,并对数据进行求和和排序输出(servelet+jsp页面)

seevlet和 javabean都是需要进行编译的java程序片段,两者最大的不同点在于bean是对数据结构的封装,以包的结构直接在servlet中进行使用,servlet就专注于对问题的逻辑处理在tomcat中两个文件夹都建在WEB-INF下,同根目录下要建立web.xml文件对servlet文件进行接口部署
例如:


 
    loginServlet
    handle.data.HandleLogin


    loginServlet
    /loginServlet


1、实现界面:



2、代码:

example6_7.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>


输入数字(用逗号空格或其他非数字字符分隔):


web.xml



    
        handleForward
        moon.sun.Example6_7_Servlet
    
    
        handleForward
        /handleForward
    
    
        sort
        moon.sun.Example6_7_Servlet_Sort
    
    
        sort
        /sort
    
    
        sum
        moon.sun.Example6_7_Servlet_Sum
    
    
        sum
        /sum
    
 

Example6_7_Servlet.java

package moon.sun;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Example6_7_Servlet extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
   }
   public void  doPost(HttpServletRequest request,HttpServletResponse response)
                throws ServletException,IOException{
      RequestDispatcher dispatcher = null; //负责转发的对象。
      request.setCharacterEncoding("utf-8");
      response.setContentType("text/html;charset=utf-8");
      String mess = request.getParameter("submit");
      String digitData = request.getParameter("digitData");
      if(digitData == null ||digitData.length()==0) {
          response.sendRedirect("example6_7.jsp");//重定向到输入数据页面。
          return;
      }
      if(mess.contains("sort")) {
         dispatcher = request.getRequestDispatcher("sort");//转发给负责排序的servlet
         dispatcher.forward(request,response);
      }
      else if(mess.contains("sum")){
         dispatcher = request.getRequestDispatcher("sum");//转发给负责排序的servlet
         dispatcher.forward(request,response);
      }
   } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException{
       doPost(request,response);
   }
}

Example6_7_Servlet_Sort.java

package moon.sun;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.TreeSet;
import java.util.Iterator;
public class Example6_7_Servlet_Sort extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
   }
   public void  doPost(HttpServletRequest request,HttpServletResponse response)
                throws ServletException,IOException{
      TreeSet treeSet = new TreeSet();//排序数字。
      request.setCharacterEncoding("utf-8");
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out=response.getWriter();
      String digitData = request.getParameter("digitData");
      sort(digitData,treeSet);
      Iterator iterator =treeSet.iterator();
      out.println("");
      out.println("排序后的数字:
"); while(iterator.hasNext()) { out.println(iterator.next()+","); } out.println(""); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ doPost(request,response); } public void sort(String input,TreeSet treeSet){ Pattern pattern; //模式对象。 Matcher matcher; //匹配对象。 String regex="-?[0-9][0-9]*[.]?[0-9]*" ;//匹配数字的正则表达式。 pattern = Pattern.compile(regex); //初试化模式对象。 matcher = pattern.matcher(input); //初始化匹配对象,用于检索input。 double sum = 0; while(matcher.find()) { String str = matcher.group(); treeSet.add(Double.parseDouble(str)); } } }

Example6_7_Servlet_Sum.java

package moon.sun;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Example6_7_Servlet_Sum extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
   }
   public void  doPost(HttpServletRequest request,HttpServletResponse response)
                throws ServletException,IOException{
      request.setCharacterEncoding("utf-8");
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out=response.getWriter();
      String digitData = request.getParameter("digitData");
      double sum = getPriceSum(digitData);
      out.println("");
      out.println("数字的代数和:"+sum);
      out.println("");
   } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException{
       doPost(request,response);
   }
    public double getPriceSum(String input){  // 定义方法
      Pattern pattern;          //模式对象。
      Matcher matcher;          //匹配对象。
      String regex="-?[0-9][0-9]*[.]?[0-9]*" ;//匹配数字的正则表达式。
      pattern = Pattern.compile(regex);  //初试化模式对象。
      matcher = pattern.matcher(input);  //初始化匹配对象,用于检索input。
      double sum = 0;
      while(matcher.find()) {
         String str = matcher.group(); 
         sum += Double.parseDouble(str);
      } 
      return sum;
   }
}

3、什么是servelet?

Servlet(Servlet Applet),全称Java Servlert .当用户请求一个jsp页面的时候,tomcat服务器自动生成和编译java文件,编译得到的字节码文件在服务器端直接创建出一个对象来响应用户的请求,像这样用来相应用户动作而创建的对象就是servlet,在jsp技术出现之前,web应用人员是自己编写类编译生成字节码文件之后复制文件到服务器特定的目录中,MVC框架中的control控制器的特性便体现在这里。

五、实现一个简单的计(servelet+jsp+javabean) 1、实现界面:


2、代码:

example7_1.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>



输入两个数: id =tom size=6/> id =tom size=6/>
选择运算符号:

运算结果: =

web.xml



    
    
        computer
        handle.data.Example7_1_Servlet
    
    
        computer
        /computer
    
  


Example7_1_Servlet.java

package handle.data;
import save.data.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Example7_1_Servlet extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
       super.init(config);
   }
   public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
       Example7_1_Bean digitBean = null;
       digitBean = new Example7_1_Bean();  //创建Javabean对象.
       //digitBean 是request bean:
       request.setAttribute("digitBean",digitBean);
       String str1 = request.getParameter("numberOne");
       String str2 = request.getParameter("numberTwo");
       if(str1==null||str2==null)
         return;
       if(str1.length()==0||str2.length()==0)
         return;
       double numberOne = Double.parseDouble(str1);
       double numberTwo = Double.parseDouble(str2);
       String operator = request.getParameter("operator");
       double result=0;
       if(operator.equals("+"))
           result = numberOne+numberTwo;
       else if(operator.equals("-"))
           result = numberOne-numberTwo;
       else if(operator.equals("*"))
           result = numberOne*numberTwo;
       else if(operator.equals("/"))
           result = numberOne/numberTwo;
       digitBean.setNumberOne(numberOne); //将数据存储在digitBean中 
       digitBean.setNumberTwo(numberTwo);  
       digitBean.setOperator(operator);   
       digitBean.setResult(result); 
       //请求example7_1.jsp显示digitBean中的数据:
       RequestDispatcher dispatcher= request.getRequestDispatcher("example7_1.jsp");
       dispatcher.forward(request,response);
   } 
   public  void  doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
       doPost(request,response);
   }
} 

Example7_1_Bean.java

package save.data;
public class Example7_1_Bean { 
   double numberOne,numberTwo,result;
   String operator="+";
   public void setNumberOne(double n){
      numberOne=n;
   }
   public double getNumberOne(){
      return numberOne; 
   }
   public void setNumberTwo(double n){
      numberTwo=n;
   }
   public double getNumberTwo(){
      return numberTwo; 
   }
   public void setOperator(String s){
      operator=s.trim();;
   }
   public String getOperator(){
      return operator;
   }
   public void setResult(double r){
      result=r; 
   }
   public double getResult(){
      return result; 
   }
}

3、为什么要同时使用bean和servelet实现页面功能?

在实际生活的应用中,软件应用的设计往往是复杂繁复的,基于此,我们希望javabean仅仅负责提供修改和返回数据的方法,而数据的处理交给控制器servlet处理,实现数据储存和处理的分离。

六、什么是Spring-MVC框架?

MVC模式,model,view,control,model(数据模型),view(视图),control(控制器)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/695554.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号