当前位置: 首页 > news >正文

jsp ajax网站开发典型实例pdf汕头市道路建设网站

jsp ajax网站开发典型实例pdf,汕头市道路建设网站,网站建设10个基本步骤,网站推广的心得仿写之前#xff0c;我们要搞清楚都要用到哪些技术 自定义注解#xff0c;比如Tomcat使用的是Servlet#xff0c;我们可以定义一个自己的MyServlet构造请求体和返回体#xff0c;比如tomcat使用HttpRequest#xff0c;我们可以自己定义myHttpRequestjava去遍历一个指定目…仿写之前我们要搞清楚都要用到哪些技术 自定义注解比如Tomcat使用的是Servlet我们可以定义一个自己的MyServlet构造请求体和返回体比如tomcat使用HttpRequest我们可以自己定义myHttpRequestjava去遍历一个指定目录然后获取到.java文件再获取到带有MyServlet注解的类然后将这个注解里的path和这个类本身映射成map通过反射去调用该类的方法doGet、doPost还需要用到socket来监听消息并且对监听到的消息进行处理 第一步自定义注解 Target(ElementType.TYPE) Documented Retention(RetentionPolicy.RUNTIME) public interface MyServlet {String path() default ; } 第二步定义HttpRequest以及HttpResponse、 public class MyHttpRequest {//定义一个map用来存放请求体中的参数key是参数名称value是参数值public MapString,String map new HashMap();public String getParameter(String key){return map.get(key);} } public class MyHttpResponse {public OutputStream outputStream;public static final String responsebody HTTP/1.1 200\r\n Content-Typetext/html\r\n \r\n;public MyHttpResponse(OutputStream outputStream) {this.outputStream outputStream;} } 第三步遍历整个目录把Java文件放入list中 private static void func(File file){File[] files file.listFiles();String s;for (File file1 : files) {if (file1.isDirectory()){func(file1);}if (file1.isFile()){//取src之后的名字s file1.toString().split(src)[1];//去掉src后边的第一个\得到全类名s s.substring(1);//判断是不是以.java结尾的文件if (s.length() 5 s.substring(s.length() - 5).equals(.java)){//把全类名中的\替换成.s s.replace(\\,.);//去掉后缀名.javas s.substring(0,s.length()-5);//把类名加入到list中javaclasses.add(s);}}}} 第四步找出带有Servlet注解的Java文件并把注解中的path类对象放入到map中 public static void getServlet() throws ClassNotFoundException {for (int i 0; i javaclasses.size(); i) {String path javaclasses.get(i);Class? cl Class.forName(path);if (cl.isAnnotationPresent(MyServlet.class)){servletMap.put(cl.getAnnotation(MyServlet.class).path(),cl);}}} 第五步创建socket连接 InetAddress localHost InetAddress.getLocalHost();System.out.println(localhost localHost);ServerSocket serverSocket new ServerSocket(8080, 10, localHost);System.out.println(等待建立连接);Socket server serverSocket.accept();System.out.println(连接已建立); 第六步定义线程接收报文 HttpAcceptThread httpAcceptThread new HttpAcceptThread(server);Thread accept new Thread(httpAcceptThread);accept.start();accept.join(); HttpAcceptThread类内容如下 class HttpAcceptThread implements Runnable{private Socket socket;ArrayListString strings new ArrayList();public HttpAcceptThread(Socket socket) {this.socket socket;}Overridepublic void run() {System.out.println(开始接收http);try {BufferedReader reader new BufferedReader(new InputStreamReader(socket.getInputStream()));String s;while ((s reader.readLine()).length() ! 0){try {strings.add(s);System.out.println(s);} catch (Exception e){System.out.println(接收Http进程结束);break;}}System.out.println(接收http进程结束);} catch (IOException e) {e.printStackTrace();}} } 第七步处理httprequest也就是通过反射去调用doGet和doPost方法 这一步有些复杂尤其是对url切割时但我给每一步都加了注释方便理解 GET /address1?a111b222 private static void requestHttp(Socket socket,String http) throws IOException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {//GET /address1?a111b222拿获取到的这个url举例//先通过空格判断是GET还是POSTString requestStyle http.split( )[0];if (requestStyle.equals(GET)){//如果是GET取空格后面部分即/address1?a111b222String httpPathAndParameter http.split( )[1];//定义httpPathString httpPath;//创建httpRequest对象MyHttpRequest myHttpRequest new MyHttpRequest();//通过索引位置判断url里边有没有带if (httpPathAndParameter.indexOf(?) ! -1){//如果有由于有个/,因此我们要先拿到address1?a111b222这部分httpPath httpPathAndParameter.substring(1);//获取问号前面部分即address1\\作为转义字符使用httpPath httpPath.split(\\?)[0];System.out.println(httpPath);//获取问号后面部分的所有参数String parameterString httpPathAndParameter.split(\\?)[1];//使用分开String[] parameters parameterString.split();for (int i 0; i parameters.length; i) {//把参数及其值仿佛request的map中myHttpRequest.map.put(parameters[i].split()[0],parameters[i].split()[1]);}} else {//如果不存在也就说明不存在参数我们只需要获取httpPathhttpPath httpPathAndParameter.substring(1);System.out.println(httpPath);}//创建HttpResponse对象OutputStream outputStream socket.getOutputStream();MyHttpResponse myHttpResponse new MyHttpResponse(outputStream);//反射调用doGetClass servletClass servletMap.get(httpPath);Method doGet servletClass.getMethod(doGet, MyHttpRequest.class, MyHttpResponse.class);doGet.invoke(servletClass.newInstance(),myHttpRequest,myHttpResponse);} else {//如果不是Get请求也按照同样的步骤先取出/address1String httpPath http.split( )[1];//去掉/,只留下address1httpPath httpPath.substring(1);System.out.println(httpPath);MyHttpRequest myHttpRequest new MyHttpRequest();OutputStream outputStream socket.getOutputStream();MyHttpResponse myHttpResponse new MyHttpResponse(outputStream);//根据httpPath取出类信息Class servletClass servletMap.get(httpPath);//获取doPost方法Method doPost servletClass.getMethod(doPost, MyHttpRequest.class, MyHttpResponse.class);//调用doPost方法doPost.invoke(servletClass.newInstance(),myHttpRequest,myHttpResponse);}} 最后一步把上面这些方法整合起来在主方法中调用同时定义好全局变量 public class MyTomcat {//用于存放Java类的全类名public static ArrayListString javaclasses new ArrayList();//用于存放Servlet的类对象其中key是Servlet的urlvalue是servlet的类对象public static HashMapString,Class servletMap new HashMap();public static void main(String[] args) throws ClassNotFoundException, IOException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {String inputPath D:\\JavaProject\\practice\\src\\tomcat;File file new File(inputPath);//获取.java后缀文件并获取全类名func(file);System.out.println(javaclasses);//获取带有servlet注解的类对象并放到map中。getServlet();System.out.println(servletMap);InetAddress localHost InetAddress.getLocalHost();System.out.println(localhost localHost);ServerSocket serverSocket new ServerSocket(8080, 10, localHost);System.out.println(等待建立连接);Socket server serverSocket.accept();System.out.println(连接已建立);//定义线程接收http报文HttpAcceptThread httpAcceptThread new HttpAcceptThread(server);Thread accept new Thread(httpAcceptThread);accept.start();accept.join();//处理请求requestHttp(server,httpAcceptThread.strings.get(0));} 然后就可以进行测试了在测试类上方加上我们已经定义好的MyServlet注解 MyServlet(path address1) public class Servlet1 {public void doGet(MyHttpRequest request, MyHttpResponse response) throws IOException {System.out.println(address1 GET响应);System.out.println(a request.getParameter(a));System.out.println(\n响应的http如下);String resp MyHttpResponse.responsebody !DOCTYPE html\n html\n head\n meta charset\utf-8\ /\n /head\n body\n \n form name\my_form\ method\POST\\n input type\button\ value\按下\ onclick\alert(你按下了按钮)\\n /form\n \n /body\n /html;System.out.println(resp);response.outputStream.write(resp.getBytes());response.outputStream.flush();response.outputStream.close();}public void doPost(MyHttpRequest request, MyHttpResponse response) throws IOException {System.out.println(\n响应的http如下);String resp MyHttpResponse.responsebody {\sorry\:\we only respond to method GET now\},\r\n ;System.out.println(resp);response.outputStream.write(resp.getBytes());response.outputStream.flush();response.outputStream.close();} } 然后启动项目 可以看到本机ip地址然后通过浏览器地址栏访问 这样就实现了一个简单的tomcat
http://www.yutouwan.com/news/193777/

相关文章:

  • 深圳门户网站建设方案海口双语网站建设
  • 电子商务网站建设教程试卷举报网站平台怎么举报
  • 总结网站推广策划书的共同特点安全之要
  • 个人网站没人访问登录wordpress数据库吗
  • 成都哪里有网站开发公司做网站的软件 知乎
  • 做淘客网站用备案安徽建设学校网站
  • 衡水做网站优化建设部网站官网造价系统
  • 织梦网站如何上传建设电影网站广告哪里找
  • 企业网站搭建智慧政务网站怎么做
  • asp网站调试wordpress 用微信登陆
  • 校园网站建设情况说明嘉兴电子商务网站建设
  • 广州网站建设很棒 乐云践新网络营销成功的案例有哪些
  • 凤岗做网站网站流量推广
  • 淘宝网网站开发wordpress调用表单
  • 如何做营销型单页网站无锡城乡建设局网站
  • 无锡建设工程项目代码申请网站网站开发vs设计报告
  • 建设银行福州分行招聘网站有没有专门的销售公司
  • 怎样在网站做咨询医生挣钱支付宝支持12306网站建设
  • 北京市建设工程交易中心网站创办个人网站
  • 网站开发费 税率河南建设集团网站
  • 包头企业网站国外对旅游网站的建设
  • 网站设计字体四川省建设厅网站投诉
  • 用PYTHON3 做网站网页传奇怎么制作
  • 陕西交通建设有限公司网站西安网站快速备案
  • 让人做网站需要注意什主要搜索引擎网站搜索结果比较
  • 图书馆网站建设总结佛山网站优化软件
  • 无视隐私的十大软件北京百度搜索优化
  • 网站认证怎么做东莞建网站服务
  • 义乌哪里有学做网站的劳务公司网站怎么做
  • 南京建设网站排名电子商务网站建设百度文库